implemented db_init

This commit is contained in:
Oscar Krause 2022-12-23 13:17:19 +01:00
parent 6049048bbf
commit f539db5933
2 changed files with 13 additions and 2 deletions

View File

@ -22,7 +22,7 @@ from sqlalchemy.orm import sessionmaker
from Crypto.PublicKey import RSA
from Crypto.PublicKey.RSA import RsaKey
from orm import Origin, Lease
from orm import Origin, Lease, init as db_init
logger = logging.getLogger()
load_dotenv('../version.env')
@ -48,6 +48,7 @@ __details = dict(
)
app, db = FastAPI(**__details), create_engine(url=str(getenv('DATABASE', 'sqlite:///db.sqlite')))
db_init(db)
TOKEN_EXPIRE_DELTA = relativedelta(hours=1) # days=1
LEASE_EXPIRE_DELTA = relativedelta(days=int(getenv('LEASE_EXPIRE_DAYS', 90)))

View File

@ -1,6 +1,6 @@
import datetime
from sqlalchemy import Column, VARCHAR, CHAR, ForeignKey, DATETIME, UniqueConstraint, update, and_, delete
from sqlalchemy import Column, VARCHAR, CHAR, ForeignKey, DATETIME, UniqueConstraint, update, and_, delete, inspect
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.future import Engine
from sqlalchemy.orm import sessionmaker
@ -102,3 +102,13 @@ class Lease(Base):
deletions = session.query(Lease).delete(Lease.origin_ref == origin_ref)
session.close()
return deletions
def init(engine: Engine):
tables = [Origin, Lease]
db = inspect(engine)
session = sessionmaker(bind=engine)()
for table in tables:
if not db.dialect.has_table(engine.connect(), table.__tablename__):
session.execute(str(table.create_statement(engine)))
session.close()