2023-05-12 22:03:44 +01:00
|
|
|
"""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
|
2023-05-13 04:06:23 +01:00
|
|
|
depends_on = down_revision
|
2023-05-12 22:03:44 +01:00
|
|
|
|
|
|
|
|
|
|
|
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')
|