Check unique org niceId

This commit is contained in:
Owen Schwartz 2024-10-14 22:31:47 -04:00
parent c47d7fb1ff
commit 1f42409826
No known key found for this signature in database
GPG key ID: 8271FDFFD9E0CCBD

View file

@ -1,6 +1,9 @@
import { fileURLToPath } from 'url';
import { dirname, join } from 'path';
import { readFileSync } from 'fs';
import { db } from '@server/db';
import { sites } from './schema';
import { eq, and } from 'drizzle-orm';
// Get the directory name of the current module
const __filename = fileURLToPath(import.meta.url);
@ -10,7 +13,23 @@ const __dirname = dirname(__filename);
const file = join(__dirname, 'names.json');
export const names = JSON.parse(readFileSync(file, 'utf-8'));
export function getUniqueName(): string {
export async function getUniqueName(orgId: string): Promise<string> {
let loops = 0;
while (true) {
if (loops > 100) {
throw new Error('Could not generate a unique name');
}
const name = generateName();
const count = await db.select({niceId: sites.niceId, orgId: sites.orgId}).from(sites).where(and(eq(sites.niceId, name), eq(sites.orgId, orgId)));
if (count.length === 0) {
return name;
}
loops++;
}
}
export function generateName(): string {
return (
names.descriptors[Math.floor(Math.random() * names.descriptors.length)] + "-" +
names.animals[Math.floor(Math.random() * names.animals.length)]