62 lines
1.9 KiB
Python
62 lines
1.9 KiB
Python
|
"""create device tables
|
||
|
|
||
|
Revision ID: 7e5a8cabd3a4
|
||
|
Revises: 335e07a98bc8
|
||
|
Create Date: 2023-05-12 21:59:26.867894
|
||
|
|
||
|
"""
|
||
|
from alembic import op
|
||
|
from sqlalchemy import Column, ForeignKey, Integer, String, DateTime
|
||
|
from sqlalchemy.sql.functions import now
|
||
|
|
||
|
|
||
|
# revision identifiers, used by Alembic.
|
||
|
revision = '7e5a8cabd3a4'
|
||
|
down_revision = '335e07a98bc8'
|
||
|
branch_labels = None
|
||
|
depends_on = '335e07a98bc8'
|
||
|
|
||
|
|
||
|
def upgrade() -> None:
|
||
|
|
||
|
device_models_table = op.create_table(
|
||
|
'device_models',
|
||
|
Column('id', Integer, primary_key=True, autoincrement=True, index=True),
|
||
|
Column('name', String, unique=True, nullable=False),
|
||
|
Column('picture_code', String, unique=True, nullable=False),
|
||
|
)
|
||
|
|
||
|
op.create_table(
|
||
|
'devices',
|
||
|
Column('id', Integer, primary_key=True, autoincrement=True, index=True),
|
||
|
Column('added', DateTime(timezone=True), nullable=False, server_default=now()),
|
||
|
Column('last_seen', DateTime(timezone=True), nullable=True, server_default=None),
|
||
|
Column('model_id', Integer, ForeignKey('device_models.id', ondelete="CASCADE"), nullable=False),
|
||
|
Column('owner_id', Integer, ForeignKey('patients.user_id', ondelete="CASCADE"), nullable=False),
|
||
|
)
|
||
|
|
||
|
# Fill table with known device models.
|
||
|
# Picture codes are generated using `python -c "import uuid; print(uuid.uuid4())"`
|
||
|
op.bulk_insert(
|
||
|
device_models_table,
|
||
|
[
|
||
|
{
|
||
|
"name": "ScanWatch",
|
||
|
"picture_code": "133184d2-3b7c-4589-bc76-9736455a56b9",
|
||
|
},
|
||
|
{
|
||
|
"name": "Thermo",
|
||
|
"picture_code": "3b0cd959-a293-488f-94d6-5f6dc0f775f3",
|
||
|
},
|
||
|
{
|
||
|
"name": "BPM Core",
|
||
|
"picture_code": "36b60fc2-567f-4e7e-b76e-2a9006c0f0fb",
|
||
|
},
|
||
|
]
|
||
|
)
|
||
|
|
||
|
|
||
|
def downgrade() -> None:
|
||
|
op.drop_table('devices')
|
||
|
op.drop_table('device_models')
|