diff options
author | Daniel Weipert <git@mail.dweipert.de> | 2025-08-19 15:50:42 +0200 |
---|---|---|
committer | Daniel Weipert <git@mail.dweipert.de> | 2025-08-19 16:11:52 +0200 |
commit | d08f4c83470c25d35d24594bd73e4effdac191a0 (patch) | |
tree | 8320e4d0750776891fa5680ce5904de714128fce /bin | |
parent | a0ad1f5e7fac279b33ea09ca0e347cd7d02cd8ec (diff) |
database migrations and models for users, devices, tokens
Diffstat (limited to 'bin')
-rwxr-xr-x | bin/db-migrate | 36 |
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]); +} |