From 87aacaa08a3d48d70d91811471e5ed9b4f533f6c Mon Sep 17 00:00:00 2001 From: Stef Date: Wed, 3 Sep 2025 15:43:28 +0200 Subject: [PATCH] Add services to db if they don't exist --- app.py | 14 +++++++++++ migrate.py | 5 ---- migrations/versions/f04407e8e466_.py | 35 ++++++++++++++++++++++++++++ models.py | 11 ++++++++- 4 files changed, 59 insertions(+), 6 deletions(-) delete mode 100644 migrate.py create mode 100644 migrations/versions/f04407e8e466_.py diff --git a/app.py b/app.py index 2cbccf3..f8108ec 100644 --- a/app.py +++ b/app.py @@ -5,6 +5,7 @@ from mem import services, app, db import threading from flask_migrate import upgrade, stamp from pathlib import Path +from models import service # Init and upgrade @@ -17,6 +18,19 @@ with app.app_context(): # Upgrade db if any new migrations exist upgrade() +with app.app_context(): + if not db.session.query(service).first(): + for s in services: + db.session.add( + service( + url=s.url, + label=s.label, + public_access=s.public, + ping_method=s.ping_type, + ) + ) + db.session.commit() + @app.route("/") def homepage(): diff --git a/migrate.py b/migrate.py deleted file mode 100644 index e177054..0000000 --- a/migrate.py +++ /dev/null @@ -1,5 +0,0 @@ -from app import app -from flask_migrate import migrate - -with app.app_context(): - migrate() diff --git a/migrations/versions/f04407e8e466_.py b/migrations/versions/f04407e8e466_.py new file mode 100644 index 0000000..17d24d7 --- /dev/null +++ b/migrations/versions/f04407e8e466_.py @@ -0,0 +1,35 @@ +"""empty message + +Revision ID: f04407e8e466 +Revises: d7d380435347 +Create Date: 2025-09-03 15:40:30.413166 + +""" +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = 'f04407e8e466' +down_revision = 'd7d380435347' +branch_labels = None +depends_on = None + + +def upgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.create_table('service', + sa.Column('id', sa.Integer(), nullable=False), + sa.Column('url', sa.String(), nullable=False), + sa.Column('label', sa.String(length=15), nullable=False), + sa.Column('public_access', sa.Boolean(), nullable=False), + sa.Column('ping_method', sa.Integer(), nullable=False), + sa.PrimaryKeyConstraint('id') + ) + # ### end Alembic commands ### + + +def downgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.drop_table('service') + # ### end Alembic commands ### diff --git a/models.py b/models.py index 0883cb6..fe1ae50 100644 --- a/models.py +++ b/models.py @@ -1,5 +1,6 @@ from mem import db from datetime import datetime, timezone +from validators import url as is_url class log(db.Model): @@ -19,5 +20,13 @@ class service(db.Model): public_access: bool = db.Column(db.Boolean, nullable=False) ping_method: int = db.Column(db.Integer, nullable=False) - def __init__(self): + def __init__( + self, url: str, label: str, public_access: bool, ping_method: int + ): + if not is_url(url): + raise Exception("URL IS NOT A VALID URL") super().__init__() + self.url = url + self.label = label + self.public_access = public_access + self.ping_method = ping_method