* esm * wip * wip * wip * wip * wip * wip * subscription notice * wip * wip * wip * fix envs * fix: update docker build * fix * esm/types * delete dashboard :D * add patches to dockerfiles * update packages + catalogs + ts * wip * remove native libs * ts * improvements * fix redirects and fetching session * try fix favicon * fixes * fix * order and resize reportds within a dashboard * improvements * wip * added userjot to dashboard * fix * add op * wip * different cache key * improve date picker * fix table * event details loading * redo onboarding completely * fix login * fix * fix * extend session, billing and improve bars * fix * reduce price on 10M
36 lines
789 B
TypeScript
36 lines
789 B
TypeScript
import { db } from '@openpanel/db';
|
|
|
|
import { slug } from './slug';
|
|
|
|
export async function getId(tableName: 'project' | 'dashboard', name: string) {
|
|
const newId = slug(name);
|
|
if (!db[tableName]) {
|
|
throw new Error('Table does not exists');
|
|
}
|
|
|
|
if (!('findUnique' in db[tableName])) {
|
|
throw new Error('findUnique does not exists');
|
|
}
|
|
|
|
// @ts-expect-error
|
|
const existingProject = await db[tableName].findUnique({
|
|
where: {
|
|
id: newId,
|
|
},
|
|
});
|
|
|
|
function random(str: string) {
|
|
const numbers = Math.floor(1000 + Math.random() * 9000);
|
|
if (str.match(/-\d{4}$/g)) {
|
|
return str.replace(/-\d{4}$/g, `-${numbers}`);
|
|
}
|
|
return `${str}-${numbers}`;
|
|
}
|
|
|
|
if (existingProject) {
|
|
return getId(tableName, random(name));
|
|
}
|
|
|
|
return newId;
|
|
}
|