Initial commit: Angular frontend and Expressjs backend

This commit is contained in:
chamikaJ
2024-05-17 09:32:30 +05:30
parent eb0a0d77d6
commit 298ca6beeb
3548 changed files with 193558 additions and 3 deletions

View File

View File

@@ -0,0 +1,53 @@
// eslint-disable-next-line @typescript-eslint/no-var-requires
const {Client} = require("pg");
import dotenv from "dotenv";
import {generateProjectKey} from "../utils/generate-project-key";
dotenv.config();
const client = new Client({
user: process.env.DB_USER,
password: process.env.DB_PASSWORD,
database: process.env.DB_NAME,
host: process.env.DB_HOST,
port: process.env.DB_PORT,
max: process.env.DB_MAX_CLIENTS,
idleTimeoutMillis: 30000,
});
function log(message: string) {
console.log("Projects Keys Migration:", message);
}
async function getAllKeysByTeamId(teamId: string) {
if (!teamId) return [];
try {
const result = await client.query("SELECT key FROM projects WHERE team_id = $1 ORDER BY key;", [teamId]);
return result.rows.map((project: any) => project.key).filter((key: any) => !!key);
} catch (error) {
return [];
}
}
async function runProjectsKeyMigration() {
log("migration started");
const result = await client.query("SELECT id, name, team_id FROM projects WHERE key IS NULL ORDER BY created_at;", []);
log(`${result.rows.length} projects found`);
for (const project of result.rows) {
const keys = await getAllKeysByTeamId(project.team_id);
const key = generateProjectKey(project.name, keys);
await client.query("UPDATE projects SET key = $1 WHERE id = $2", [key, project.id]);
log(`${project.name} (${key})`);
}
log("migration ended");
}
client.connect(async (error: any) => {
if (!error) {
await runProjectsKeyMigration();
client.end();
} else {
console.error(error);
}
});