from sqlalchemy import create_engine,text
from sqlalchemy.orm import sessionmaker, declarative_base
from datetime import datetime
from sqlalchemy.orm import relationship
from sqlalchemy import Column, ForeignKey, Integer, String, DateTime, Text, Boolean
from sqlalchemy.orm import scoped_session
from sqlalchemy.pool import QueuePool
import psycopg2
import sqlalchemy
# conn = psycopg2.connect(database="masterdb",
# user="kft_user",
# password="6dbvghdjhh78bs",
# port="5432")
conn = psycopg2.connect("db_url")
cursor = conn.cursor()
SQLALCHEMY_DATABASE_URL = """db_url"""
dbschema = 'kft_dev_db'
engine = create_engine(SQLALCHEMY_DATABASE_URL, poolclass=QueuePool, pool_size=5, max_overflow=10)
connectionpool = engine.connect()
con = engine.connect()
Base = declarative_base()
session_factory = sessionmaker(autocommit=False, autoflush=False,bind=engine)
Session = scoped_session(session_factory)
# print('Global Session', Session)
#--------------------------------------------
#models
class User(Base):
__tablename__ = "org_users"
__table_args__ = {'schema': dbschema}
org_user_id= Column(Integer, primary_key=True, index=True)
org_role_id_ref=Column(Integer,ForeignKey(f'{dbschema}.org_roles.org_role_id', ondelete='CASCADE'))
first_name = Column (String(128), nullable=False)
last_name = Column(String(128), nullable=False)
email = Column(String(128), nullable=False)
auth_token = Column(Text, default=None)
encrypted_password = Column(Text, nullable=False)
mobile_number = Column(String(128))
designation = Column(String(128))
is_verified = Column(Boolean, default=False)
is_active = Column(Boolean, default=True)
created_at = Column(DateTime, default=datetime.utcnow(), nullable=False)
updated_at = Column(DateTime, default=None)
roles = relationship('Roles', back_populates='user_reg')
class Roles(Base):
__tablename__ = "org_roles"
__table_args__={'schema': dbschema}
org_role_id = Column(Integer, primary_key = True, index=True)
role_name = Column(String(128), nullable=False)
is_active = Column(Boolean, default=True)
created_at = Column(DateTime, default=datetime.utcnow(), nullable=False)
updated_at = Column(DateTime, default=None)
description = Column(Text,default= None)
user_reg = relationship('User',back_populates='roles')
def get_user(user_id):
print("get_user")
user = Session.query(User).filter_by(org_user_id=user_id).first()
print("Active Session", {'id': user.org_user_id, 'email': user.email} )
# print(con , "con of poooolsss start")
# cursor.close()
Session.close()
# print(con.close() , "con of poooolsss")
user = Session.query(User).filter_by(org_user_id=user_id).first()
print("After closing session", {'id': user.org_user_id, 'email': user.email} )