diff --git a/src/backend/database/db/index.ts b/src/backend/database/db/index.ts index f9e1017f..d59a3a58 100644 --- a/src/backend/database/db/index.ts +++ b/src/backend/database/db/index.ts @@ -208,6 +208,8 @@ async function initializeCompleteDatabase(): Promise { force_keyboard_interactive TEXT, stats_config TEXT, terminal_config TEXT, + notes TEXT, + expiration_date TEXT, created_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP, updated_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (user_id) REFERENCES users (id) ON DELETE CASCADE @@ -551,6 +553,10 @@ const migrateSchema = () => { } } + // Add new columns for notes and expiration_date + addColumnIfNotExists("ssh_data", "notes", "TEXT"); + addColumnIfNotExists("ssh_data", "expiration_date", "TEXT"); + databaseLogger.success("Schema migration completed", { operation: "schema_migration", }); diff --git a/src/backend/database/db/schema.ts b/src/backend/database/db/schema.ts index 074b4103..5e796f76 100644 --- a/src/backend/database/db/schema.ts +++ b/src/backend/database/db/schema.ts @@ -90,6 +90,8 @@ export const sshData = sqliteTable("ssh_data", { statsConfig: text("stats_config"), terminalConfig: text("terminal_config"), quickActions: text("quick_actions"), + notes: text("notes"), + expirationDate: text("expiration_date"), createdAt: text("created_at") .notNull() .default(sql`CURRENT_TIMESTAMP`), diff --git a/src/backend/database/routes/ssh.ts b/src/backend/database/routes/ssh.ts index 955135a4..a906163f 100644 --- a/src/backend/database/routes/ssh.ts +++ b/src/backend/database/routes/ssh.ts @@ -242,6 +242,8 @@ router.post( statsConfig, terminalConfig, forceKeyboardInteractive, + notes, + expirationDate, } = hostData; if ( !isNonEmptyString(userId) || @@ -284,6 +286,8 @@ router.post( statsConfig: statsConfig ? JSON.stringify(statsConfig) : null, terminalConfig: terminalConfig ? JSON.stringify(terminalConfig) : null, forceKeyboardInteractive: forceKeyboardInteractive ? "true" : "false", + notes: notes || null, + expirationDate: expirationDate || null, }; if (effectiveAuthType === "password") { @@ -464,7 +468,13 @@ router.put( statsConfig, terminalConfig, forceKeyboardInteractive, + notes, + expirationDate, } = hostData; + + // Temporary logging to debug notes and expirationDate + console.log("DEBUG - Update host data:", { notes, expirationDate }); + if ( !isNonEmptyString(userId) || !isNonEmptyString(ip) || @@ -507,6 +517,8 @@ router.put( statsConfig: statsConfig ? JSON.stringify(statsConfig) : null, terminalConfig: terminalConfig ? JSON.stringify(terminalConfig) : null, forceKeyboardInteractive: forceKeyboardInteractive ? "true" : "false", + notes: notes || null, + expirationDate: expirationDate || null, }; if (effectiveAuthType === "password") { diff --git a/src/components/ui/textarea.tsx b/src/components/ui/textarea.tsx index 6c816b16..a5c84926 100644 --- a/src/components/ui/textarea.tsx +++ b/src/components/ui/textarea.tsx @@ -9,7 +9,7 @@ const Textarea = React.forwardRef( return (