From 284442bb31ef40f70a30b0afc1ece7095dfe8020 Mon Sep 17 00:00:00 2001 From: Thomas Oettli Date: Sun, 18 Jan 2026 20:37:03 +0100 Subject: [PATCH] Add version table in preparation for future DB upgrades --- src/ddns_service/models.py | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/src/ddns_service/models.py b/src/ddns_service/models.py index 50878c9..cfc09e3 100644 --- a/src/ddns_service/models.py +++ b/src/ddns_service/models.py @@ -19,6 +19,9 @@ from peewee import ( # Database instance (initialized later) db = SqliteDatabase(None) +# Current database schema version +DATABASE_VERSION = 1 + class BaseModel(Model): """Base model with database binding.""" @@ -58,6 +61,15 @@ class Hostname(BaseModel): table_name = "hostnames" +class Version(BaseModel): + """Database schema version for migrations.""" + + version = IntegerField() + + class Meta: + table_name = "version" + + def init_database(config: dict): """ Initialize database connection based on config. @@ -91,6 +103,7 @@ def init_database(config: dict): # Re-bind models to new database User._meta.database = db Hostname._meta.database = db + Version._meta.database = db logging.info(f"Database backend: MariaDB db={config['database']['database']}") else: @@ -101,7 +114,9 @@ def init_database(config: dict): def create_tables(): """Create database tables if they don't exist.""" - db.create_tables([User, Hostname]) + db.create_tables([User, Hostname, Version]) + if Version.select().count() == 0: + Version.create(version=DATABASE_VERSION) logging.info("Database tables created") @@ -159,8 +174,10 @@ def get_hostname_for_user(hostname: str, user: User): # Re-export DoesNotExist for convenience __all__ = [ 'db', + 'DATABASE_VERSION', 'User', 'Hostname', + 'Version', 'init_database', 'create_tables', 'get_user',