diff --git a/migrations/versions/f87909a4293b_.py b/migrations/versions/f87909a4293b_.py new file mode 100644 index 0000000..8ef310d --- /dev/null +++ b/migrations/versions/f87909a4293b_.py @@ -0,0 +1,50 @@ +"""empty message + +Revision ID: f87909a4293b +Revises: f04407e8e466 +Create Date: 2025-09-03 16:36:14.608372 + +""" + +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = "f87909a4293b" +down_revision = "f04407e8e466" +branch_labels = None +depends_on = None + + +def upgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.execute("DROP TABLE IF EXISTS _alembic_tmp_log") + op.execute("DELETE FROM log") + + with op.batch_alter_table("log", schema=None) as batch_op: + batch_op.add_column( + sa.Column( + "service_id", sa.Integer(), nullable=False, server_default="0" + ) + ) + batch_op.add_column(sa.Column("ping", sa.Integer(), nullable=True)) + batch_op.create_index( + batch_op.f("ix_log_dateCreated"), ["dateCreated"], unique=False + ) + batch_op.create_foreign_key( + "fk_log2service", "service", ["service_id"], ["id"] + ) + + # ### end Alembic commands ### + + +def downgrade(): + # ### commands auto generated by Alembic - please adjust! ### + with op.batch_alter_table("log", schema=None) as batch_op: + batch_op.drop_constraint("fk_log2service", type_="foreignkey") + batch_op.drop_index(batch_op.f("ix_log_dateCreated")) + batch_op.drop_column("ping") + batch_op.drop_column("service_id") + + # ### end Alembic commands ### diff --git a/models.py b/models.py index 4ecb55d..01803a5 100644 --- a/models.py +++ b/models.py @@ -1,12 +1,18 @@ from mem import db from datetime import datetime, timezone from validators import url as is_url -from typing import Any +from typing import Any, Optional class log(db.Model): id: int = db.Column(db.Integer, primary_key=True) - dateCreated: datetime = db.Column(db.DateTime, nullable=False) + dateCreated: datetime = db.Column(db.DateTime, nullable=False, index=True) + service_id: int = db.Column( + db.Integer, + db.ForeignKey("service.id"), + nullable=False, + ) + ping: Optional[int] = db.Column(db.Integer, nullable=True) def __init__(self): super().__init__() @@ -21,6 +27,8 @@ class service(db.Model): public_access: bool = db.Column(db.Boolean, nullable=False) ping_method: int = db.Column(db.Integer, nullable=False) + logs = db.relationship("log") + def __init__( self, url: str, label: str, public_access: bool, ping_method: int ):