Add AMEV Gleichzeitigkeitsfaktor-Auswähler und einklappbare Seitenleiste
- Gzf-Picker-Modal mit AMEV-Tabelle 3 (Planungshilfe für elektrische Leistungsbilanzen) im Projektgerät-Modal und im globalen Geräteformular - Docker-Deploy-Tooling (docker-start.sh, run-migrations.js) für den produktiven Container - Seitenleiste ist jetzt einklappbar (Icon-only, Zustand in localStorage)
This commit is contained in:
@@ -0,0 +1,16 @@
|
||||
#!/bin/sh
|
||||
set -e
|
||||
|
||||
echo "Running migrations..."
|
||||
node scripts/run-migrations.js
|
||||
|
||||
echo "Starting API server on :3000..."
|
||||
node dist/server/index.js &
|
||||
|
||||
echo "Waiting for API..."
|
||||
until node -e "require('http').get('http://localhost:3000/health', r => process.exit(r.statusCode===200?0:1)).on('error',()=>process.exit(1))" 2>/dev/null; do
|
||||
sleep 1
|
||||
done
|
||||
|
||||
echo "Starting Next.js on :3001..."
|
||||
exec node_modules/.bin/next start -p 3001
|
||||
@@ -0,0 +1,16 @@
|
||||
const { migrate } = require('drizzle-orm/better-sqlite3/migrator');
|
||||
const { drizzle } = require('drizzle-orm/better-sqlite3');
|
||||
const Database = require('better-sqlite3');
|
||||
const fs = require('node:fs');
|
||||
const path = require('node:path');
|
||||
|
||||
const dataDir = path.resolve('data');
|
||||
if (!fs.existsSync(dataDir)) fs.mkdirSync(dataDir, { recursive: true });
|
||||
|
||||
const sqlite = new Database(path.join(dataDir, 'leistungsbilanz.db'));
|
||||
const db = drizzle(sqlite);
|
||||
|
||||
migrate(db, { migrationsFolder: path.resolve('src/db/migrations') });
|
||||
sqlite.close();
|
||||
|
||||
console.log('Migrations applied');
|
||||
Reference in New Issue
Block a user