Files
cloudron-box/migrations/20250507122501-dockerRegistries-create-table.js
Girish Ramakrishnan 12e073e8cf use node: prefix for requires
mostly because code is being autogenerated by all the AI stuff using
this prefix. it's also used in the stack trace.
2025-08-14 12:55:35 +05:30

35 lines
1.3 KiB
JavaScript

'use strict';
const crypto = require('node:crypto');
exports.up = async function (db) {
const cmd = 'CREATE TABLE IF NOT EXISTS dockerRegistries(' +
'id VARCHAR(128) NOT NULL UNIQUE,' +
'provider VARCHAR(16) NOT NULL,' +
'serverAddress VARCHAR(128) NOT NULL,' +
'username VARCHAR(128),' +
'email VARCHAR(128),' +
'password VARCHAR(128),' +
'PRIMARY KEY (id)) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin';
await db.runSql(cmd);
const result = await db.runSql('SELECT * FROM settings WHERE name=?', [ 'registry_config' ]);
if (!result.length) return;
await db.runSql('START TRANSACTION');
const registryConfig = JSON.parse(result[0].value);
if (registryConfig.provider !== 'noop') {
await db.runSql('INSERT INTO dockerRegistries (id, provider, serverAddress, username, email, password) VALUES (?, ?, ?, ?, ?, ?)',
[ `rc-${crypto.randomUUID()}`, registryConfig.provider, registryConfig.serverAddress, registryConfig.username, registryConfig.email || null, registryConfig.password ]);
}
await db.runSql('DELETE FROM settings WHERE name=?', [ 'registry_config']);
await db.runSql('COMMIT');
};
exports.down = async function (db) {
await db.runSql('DROP TABLE dockerRegistries');
};