Add identifier column to plugins table for cleaner plugin lookup

- Added 'identifier' column (unique) for machine-readable plugin ID
- 'name' now used for display name only
- Updated trial-execution to look up by identifier first, then name
- Added migration script for existing databases
This commit is contained in:
2026-03-21 20:03:33 -04:00
parent e84c794962
commit 4e86546311
7 changed files with 4539 additions and 12 deletions

View File

@@ -0,0 +1,31 @@
import { db } from "~/server/db";
import { sql } from "drizzle-orm";
async function migrate() {
console.log("Adding identifier column to hs_plugin...");
try {
await db.execute(sql`ALTER TABLE hs_plugin ADD COLUMN identifier varchar(100)`);
console.log("✓ Added identifier column");
} catch (e: any) {
console.log("Column may already exist:", e.message);
}
try {
await db.execute(sql`UPDATE hs_plugin SET identifier = name WHERE identifier IS NULL`);
console.log("✓ Copied name to identifier");
} catch (e: any) {
console.log("Error copying:", e.message);
}
try {
await db.execute(sql`ALTER TABLE hs_plugin ADD CONSTRAINT hs_plugin_identifier_unique UNIQUE (identifier)`);
console.log("✓ Added unique constraint");
} catch (e: any) {
console.log("Constraint may already exist:", e.message);
}
console.log("Migration complete!");
}
migrate().catch(console.error);

View File

@@ -159,6 +159,7 @@ async function main() {
.insert(schema.plugins)
.values({
robotId: naoRobot!.id,
identifier: NAO_PLUGIN_DEF.robotId,
name: NAO_PLUGIN_DEF.name,
version: NAO_PLUGIN_DEF.version,
description: NAO_PLUGIN_DEF.description,