module migrations.models; import hunt.database; import std.format; // struct Version { // ubyte id; // uint version_; // } struct Migrations { private string migrationsTable; public Database db; this(Database _db, string _migrationsTable = "migrations") { db = _db; migrationsTable = _migrationsTable; } void initDatabase() { /* block */ { immutable sql = format!"CREATE TABLE %s (id TINYINT UNSIGNED NOT NULL PRIMARY KEY, version INT UNSIGNED NOT NULL)"(migrationsTable); db.execute(sql); } /* block */ { immutable sql = format!"INSERT %s SET id=1, version=0"(migrationsTable); db.execute(sql); } } @property uint version_() { immutable sql = format!"SELECT version FROM %s LIMIT 1"(migrationsTable); return db.query(sql).iterator.front["version"].get!uint; } @property version_(uint value) { immutable sql = format!"UPDATE %s SET version=%d"(migrationsTable, value); db.execute(sql); } }