frontend/lib/deploy/database-config.ts

80 lines
1.5 KiB
TypeScript

import { generateName } from "@/utils/name-generator";
import { generatePassword } from "@/utils/password-generator";
export interface IDatabaseProvider {
id: string;
display: string;
image: {
alt: string;
src: string;
};
versions?: IDatabaseProviderVersion[];
}
export interface IDatabaseProviderVersion {
id: string;
display: string;
}
export interface IDatabaseSpecs {
id: string;
cpu: number;
memory?: number;
storage?: number;
maxConnections?: number;
}
export interface IDatabaseConfiguration {
workspaceId: string;
name: string;
provider: IDatabaseProvider;
user: {
username: string;
password: string;
};
specs: IDatabaseSpecs;
}
export function defaultDatabaseConfiguration(workspaceId: string): IDatabaseConfiguration {
return {
workspaceId,
name: generateName().toLowerCase(),
provider: databaseProviders[0],
user: {
username: "deployadmin",
password: generatePassword({ length: 20, numberOfDigits: 4, numberOfSpecialCharacters: 4 }),
},
specs: {
cpu: 0,
memory: 0,
storage: 0,
},
};
}
export const databaseProviders: IDatabaseProvider[] = [
{
id: 'vitess',
display: 'Vitess',
image: {
alt: 'Vitess',
src: '/vitess.png',
},
},
{
id: 'redis',
display: 'Redis',
image: {
alt: 'Redis',
src: '/redis.svg',
},
},
{
id: 'postgres',
display: 'Postgres',
image: {
alt: 'Postgres',
src: '/postgres.png',
},
},
];