50 lines
1.6 KiB
TypeScript
50 lines
1.6 KiB
TypeScript
import { BaseMigration } from './base-migration.ts';
|
|
import type { TQueryFunction } from '../types.ts';
|
|
|
|
export class Migration007PlatformServices extends BaseMigration {
|
|
readonly version = 7;
|
|
readonly description = 'Platform services tables';
|
|
|
|
up(query: TQueryFunction): void {
|
|
query(`
|
|
CREATE TABLE platform_services (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
name TEXT NOT NULL UNIQUE,
|
|
type TEXT NOT NULL,
|
|
status TEXT NOT NULL DEFAULT 'stopped',
|
|
container_id TEXT,
|
|
config TEXT NOT NULL DEFAULT '{}',
|
|
admin_credentials_encrypted TEXT,
|
|
created_at REAL NOT NULL,
|
|
updated_at REAL NOT NULL
|
|
)
|
|
`);
|
|
|
|
query(`
|
|
CREATE TABLE platform_resources (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
platform_service_id INTEGER NOT NULL,
|
|
service_id INTEGER NOT NULL,
|
|
resource_type TEXT NOT NULL,
|
|
resource_name TEXT NOT NULL,
|
|
credentials_encrypted TEXT NOT NULL,
|
|
created_at REAL NOT NULL,
|
|
FOREIGN KEY (platform_service_id) REFERENCES platform_services(id) ON DELETE CASCADE,
|
|
FOREIGN KEY (service_id) REFERENCES services(id) ON DELETE CASCADE
|
|
)
|
|
`);
|
|
|
|
query(`ALTER TABLE services ADD COLUMN platform_requirements TEXT DEFAULT '{}'`);
|
|
|
|
query(
|
|
'CREATE INDEX IF NOT EXISTS idx_platform_services_type ON platform_services(type)',
|
|
);
|
|
query(
|
|
'CREATE INDEX IF NOT EXISTS idx_platform_resources_service ON platform_resources(service_id)',
|
|
);
|
|
query(
|
|
'CREATE INDEX IF NOT EXISTS idx_platform_resources_platform ON platform_resources(platform_service_id)',
|
|
);
|
|
}
|
|
}
|