80 lines
1.5 KiB
TypeScript
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',
|
|
},
|
|
},
|
|
]; |