Update Access Key ORM

This commit is contained in:
2022-07-12 10:52:33 -07:00
parent b496633642
commit ea93a43004
5 changed files with 35 additions and 7 deletions

View File

@@ -1,8 +1,8 @@
"""empty message """empty message
Revision ID: 04f3fe65d40b Revision ID: 23baf9256373
Revises: Revises:
Create Date: 2022-07-12 07:03:12.713616 Create Date: 2022-07-12 10:51:54.236220
""" """
from alembic import op from alembic import op
@@ -10,7 +10,7 @@ import sqlalchemy as sa
# revision identifiers, used by Alembic. # revision identifiers, used by Alembic.
revision = '04f3fe65d40b' revision = '23baf9256373'
down_revision = None down_revision = None
branch_labels = None branch_labels = None
depends_on = None depends_on = None
@@ -51,12 +51,12 @@ def upgrade():
) )
op.create_table('lists', op.create_table('lists',
sa.Column('id', sa.Integer(), nullable=False), sa.Column('id', sa.Integer(), nullable=False),
sa.Column('accessKey', sa.String(length=64), nullable=True), sa.Column('key', sa.String(length=64), nullable=True),
sa.Column('name', sa.String(length=128), nullable=False), sa.Column('name', sa.String(length=128), nullable=False),
sa.Column('notes', sa.String(), nullable=True), sa.Column('notes', sa.String(), nullable=True),
sa.Column('createdAt', sa.DateTime(), nullable=True), sa.Column('createdAt', sa.DateTime(), nullable=True),
sa.Column('modifiedAt', sa.DateTime(), nullable=True), sa.Column('modifiedAt', sa.DateTime(), nullable=True),
sa.ForeignKeyConstraint(['accessKey'], ['access_keys.key'], ), sa.ForeignKeyConstraint(['key'], ['access_keys.key'], ),
sa.PrimaryKeyConstraint('id') sa.PrimaryKeyConstraint('id')
) )
op.create_table('products', op.create_table('products',

View File

@@ -29,6 +29,16 @@ def init_orm():
# Access Keys # Access Keys
db.mapper(AccessKey, access_keys, properties={ db.mapper(AccessKey, access_keys, properties={
'lists': db.relationship(
ShoppingList,
back_populates='accessKey',
cascade='all, delete-orphan',
),
'products': db.relationship(
Product,
back_populates='accessKey',
cascade='all, delete-orphan',
),
'tokens': db.relationship( 'tokens': db.relationship(
AccessToken, AccessToken,
back_populates='accessKey', back_populates='accessKey',
@@ -58,6 +68,10 @@ def init_orm():
# Products # Products
db.mapper(Product, products, properties={ db.mapper(Product, products, properties={
'accessKey': db.relationship(
AccessKey,
back_populates='products'
),
'entries': db.relationship( 'entries': db.relationship(
ListEntry, ListEntry,
back_populates='product', back_populates='product',
@@ -80,6 +94,10 @@ def init_orm():
# Shopping Lists # Shopping Lists
db.mapper(ShoppingList, lists, properties={ db.mapper(ShoppingList, lists, properties={
'accessKey': db.relationship(
AccessKey,
back_populates='lists'
),
'entries': db.relationship( 'entries': db.relationship(
ListEntry, ListEntry,
back_populates='shoppingList', back_populates='shoppingList',

View File

@@ -68,7 +68,7 @@ lists = db.Table(
db.Column('id', db.Integer, primary_key=True), db.Column('id', db.Integer, primary_key=True),
# Access Key # Access Key
db.Column('accessKey', db.ForeignKey('access_keys.key'), default=None), db.Column('key', db.ForeignKey('access_keys.key'), default=None),
# List Attributes # List Attributes
db.Column('name', db.String(128), nullable=False), db.Column('name', db.String(128), nullable=False),

View File

@@ -6,7 +6,11 @@ Copyright (c) 2022 Asymworks, LLC. All Rights Reserved.
from dataclasses import dataclass, field from dataclasses import dataclass, field
from datetime import datetime from datetime import datetime
from typing import List from typing import List, TYPE_CHECKING
if TYPE_CHECKING:
from .list import ShoppingList
from .product import Product
__all__ = ('AccessKey', 'AccessToken') __all__ = ('AccessKey', 'AccessToken')
@@ -42,6 +46,8 @@ class AccessKey:
restoredAt: datetime = None restoredAt: datetime = None
# Relationship Fields # Relationship Fields
lists: List['ShoppingList'] = field(default_factory=list)
products: List['Product'] = field(default_factory=list)
tokens: List['AccessToken'] = field(default_factory=list) tokens: List['AccessToken'] = field(default_factory=list)

View File

@@ -133,6 +133,10 @@ def create_app(app_config=None, app_name=None):
from .socketio import init_socketio from .socketio import init_socketio
init_socketio(app) init_socketio(app)
# Initialize Frontend
from .frontend import init_frontend
init_frontend(app)
# Startup Complete # Startup Complete
app.logger.info('{} startup complete'.format(app.config['APP_NAME'])) app.logger.info('{} startup complete'.format(app.config['APP_NAME']))