summaryrefslogtreecommitdiff
path: root/bin
diff options
context:
space:
mode:
authorDaniel Weipert <git@mail.dweipert.de>2025-08-19 15:50:42 +0200
committerDaniel Weipert <git@mail.dweipert.de>2025-08-19 16:11:52 +0200
commitd08f4c83470c25d35d24594bd73e4effdac191a0 (patch)
tree8320e4d0750776891fa5680ce5904de714128fce /bin
parenta0ad1f5e7fac279b33ea09ca0e347cd7d02cd8ec (diff)
database migrations and models for users, devices, tokens
Diffstat (limited to 'bin')
-rwxr-xr-xbin/db-migrate36
1 files changed, 36 insertions, 0 deletions
diff --git a/bin/db-migrate b/bin/db-migrate
new file mode 100755
index 0000000..784aadc
--- /dev/null
+++ b/bin/db-migrate
@@ -0,0 +1,36 @@
+#!/bin/env php
+
+<?php
+
+use App\Database;
+use Symfony\Component\Dotenv\Dotenv;
+
+require_once dirname(__DIR__) . "/vendor/autoload.php";
+
+$dotenv = new Dotenv();
+$dotenv->load(dirname(__DIR__) . "/.env");
+
+$migrationsPath = dirname(__DIR__) . "/migrations";
+$migrations = scandir($migrationsPath, SCANDIR_SORT_ASCENDING);
+
+$appliedMigrations = [];
+try {
+ Database::getInstance()->query("select name from migrations")->fetchAll();
+} catch (\PDOException $exception) {
+ echo "migrations table doesn't exist yet.";
+}
+
+foreach ($migrations as $migration) {
+ if (in_array($migration, [".", ".."])) {
+ continue;
+ }
+
+ if (in_array($migration, $appliedMigrations)) {
+ continue;
+ }
+
+ $path = "$migrationsPath/$migration";
+ include $path;
+
+ Database::getInstance()->query("insert into migrations (name) values (:name)", ["name" => $migration]);
+}