contentmatcher/create_db.py

69 lines
2.2 KiB
Python
Raw Normal View History

2022-04-23 22:55:51 +02:00
#!/usr/bin/python3
2022-04-25 00:32:17 +02:00
from csv import unregister_dialect
#import email
2022-04-25 00:32:17 +02:00
from sqlite3 import Date
from xmlrpc.client import Boolean
2022-05-13 18:22:36 +02:00
from click import password_option
from pymysql import Time, Timestamp
#from ssl import _PasswordType
#from xmlrpc.client import DateTime
#from matplotlib.pyplot import title
from sqlalchemy import Column, Integer, Float, String, Text, DateTime, ForeignKey, BOOLEAN
2022-04-23 22:55:51 +02:00
from sqlalchemy.ext.declarative import declarative_base
#from sqlalchemy.orm import relationship
2022-04-23 22:55:51 +02:00
from sqlalchemy import func, create_engine,join
2022-06-14 14:47:12 +02:00
from sqlalchemy.orm import sessionmaker
2022-04-23 22:55:51 +02:00
from config import CONFIG
Base = declarative_base()
class User(Base):
2022-04-25 00:32:17 +02:00
__tablename__ = 'user'
id = Column(Integer, primary_key=True, autoincrement=True)
2022-05-13 18:22:36 +02:00
username = Column(String(64))
password = Column(String(64))
# email = Column(String)
2022-05-18 14:08:35 +02:00
# config
# deck_size = Column(Integer)
2022-04-23 22:55:51 +02:00
class Card(Base):
__tablename__ = 'card'
2022-04-25 00:32:17 +02:00
id = Column(Integer, primary_key=True, autoincrement=True)
title = Column(String(1024))
owner_id = Column(Integer, ForeignKey("user.id"), nullable=False)
interest_rate = Column(Float)
item_location = Column(String(1024))
last_review = Column(Text)
share_id = Column(Text) #explain: 0 means not shared, otherwise increment from db and generate new cards for all relevant(tbd) users
class Deck(Base):
__tablename__ = 'deck'
id = Column(Integer, primary_key=True, autoincrement=True)
2022-06-05 18:54:48 +02:00
owner_id = Column(Integer, ForeignKey("user.id"), nullable=False)
cards_by_id = Column(Text)
number_of_cards = Column(Integer)
current_card = Column(Integer)
completed = Column(BOOLEAN)
"""
class Review(Base):
__tablename__ = 'review'
id = Column(Integer, primary_key=True, autoincrement=True)
reviewer_id = Column(Integer, ForeignKey("user.id"), nullable=False)
card_id = Column(Integer, ForeignKey("user.id"), nullable=False)
review = Column(Text)
time = Column(DateTime)
"""
2022-04-25 00:32:17 +02:00
2022-04-23 22:55:51 +02:00
engine = create_engine(CONFIG['DB_CONNECTION'])
Base.metadata.create_all(engine)
2022-06-14 14:47:12 +02:00
def get_session():
engine = create_engine(CONFIG['DB_CONNECTION'])
dbsessionmaker = sessionmaker(bind=engine)
return dbsessionmaker()