from pydantic import BaseModel, EmailStr import databases import sqlalchemy import ormantic as orm from os import environ database = databases.Database(environ.get( "DATABASE_URL", "sqlite:///memes.sqlite")) metadata = sqlalchemy.MetaData() class Token(BaseModel): access_token: str token_type: str class TokenData(BaseModel): username: str = None class User(orm.Model): username: orm.String(max_length=100, unique=True) email: orm.String(max_length=100) full_name: orm.String(max_length=100) disabled: orm.Boolean() = False class UserInDB(User): hashed_password: orm.String(max_length=100) id: orm.Integer(primary_key=True) = None class Mapping: table_name = "User" metadata = metadata database = database class TicketCollection(orm.Model): name: orm.String(max_length=100) price: orm.Integer() = 0 description: orm.String(max_length=1000) = "" requires_student: orm.Boolean() = False class TicketCollectionDB(TicketCollection): user: orm.ForeignKey(UserInDB) id: orm.Integer(primary_key=True) = None class Mapping: table_name = "TicketCollection" metadata = metadata database = database class NewCollection(BaseModel): name: str price: float description: str = "" requires_student: bool = False class NewUser(BaseModel): username: str password: str email: EmailStr name: str # Create the database engine = sqlalchemy.create_engine(str(database.url)) metadata.create_all(engine)