diff --git a/apps/api/src/lib/common.ts b/apps/api/src/lib/common.ts index cba901255..febb08374 100644 --- a/apps/api/src/lib/common.ts +++ b/apps/api/src/lib/common.ts @@ -414,7 +414,13 @@ export const supportedDatabaseTypesAndVersions = [ baseImageARM: 'couchdb', versions: ['3.2.2', '3.1.2', '2.3.1'], versionsARM: ['3.2.2', '3.1.2', '2.3.1'] - } + }, + { + name: 'edgedb', + fancyName: 'EdgeDB', + baseImage: 'edgedb/edgedb', + versions: ['2.0', '1.4'] + } ]; export async function getFreeSSHLocalPort(id: string): Promise { @@ -730,6 +736,18 @@ export function generateDatabaseConfiguration(database: any, arch: string): COUCHDB_PASSWORD: string; COUCHDB_USER: string; }; + } + | { + volume: string; + image: string; + ulimits: Record; + privatePort: number; + environmentVariables: { + EDGEDB_SERVER_PASSWORD: string; + EDGEDB_SERVER_USER: string; + EDGEDB_SERVER_DATABASE: string; + EDGEDB_SERVER_SECURITY: string; + }; } { const { id, @@ -848,10 +866,23 @@ export function generateDatabaseConfiguration(database: any, arch: string): volume: `${id}-${type}-data:/bitnami/couchdb`, ulimits: {} }; - if (isARM(arch)) { + if (isARM(arch)) { configuration.volume = `${id}-${type}-data:/opt/couchdb/data`; } return configuration + } else if (type === 'edgedb') { + return { + privatePort: 5656, + environmentVariables: { + EDGEDB_SERVER_PASSWORD: rootUserPassword, + EDGEDB_SERVER_USER: rootUser, + EDGEDB_SERVER_DATABASE: defaultDatabase, + EDGEDB_SERVER_SECURITY: 'insecure_dev_mode' + }, + image: `${baseImage}:${version}`, + volume: `${id}-${type}-data:/edgedb/edgedb`, + ulimits: {} + }; } } export function isARM(arch: string) { diff --git a/apps/ui/src/lib/components/svg/databases/EdgeDB.svelte b/apps/ui/src/lib/components/svg/databases/EdgeDB.svelte new file mode 100644 index 000000000..25b705c2c --- /dev/null +++ b/apps/ui/src/lib/components/svg/databases/EdgeDB.svelte @@ -0,0 +1,22 @@ + + + diff --git a/apps/ui/src/routes/databases/[id]/_DatabaseLinks.svelte b/apps/ui/src/routes/databases/[id]/_DatabaseLinks.svelte index 50eed98b2..f1792cb6b 100644 --- a/apps/ui/src/routes/databases/[id]/_DatabaseLinks.svelte +++ b/apps/ui/src/routes/databases/[id]/_DatabaseLinks.svelte @@ -3,6 +3,7 @@ import Clickhouse from '$lib/components/svg/databases/Clickhouse.svelte'; import CouchDb from '$lib/components/svg/databases/CouchDB.svelte'; + import EdgeDb from '$lib/components/svg/databases/EdgeDB.svelte'; import MariaDb from '$lib/components/svg/databases/MariaDB.svelte'; import MongoDb from '$lib/components/svg/databases/MongoDB.svelte'; import MySql from '$lib/components/svg/databases/MySQL.svelte'; @@ -25,5 +26,7 @@ {:else if database.type === 'redis'} + {:else if database.type === 'edgedb'} + {/if} diff --git a/apps/ui/src/routes/databases/[id]/_Databases/_Databases.svelte b/apps/ui/src/routes/databases/[id]/_Databases/_Databases.svelte index 5cfa6025e..61972edfe 100644 --- a/apps/ui/src/routes/databases/[id]/_Databases/_Databases.svelte +++ b/apps/ui/src/routes/databases/[id]/_Databases/_Databases.svelte @@ -12,6 +12,7 @@ import PostgreSql from './_PostgreSQL.svelte'; import Redis from './_Redis.svelte'; import CouchDb from './_CouchDb.svelte'; + import EdgeDB from './_EdgeDB.svelte'; import { post } from '$lib/api'; import { t } from '$lib/translations'; import { errorNotification } from '$lib/common'; @@ -36,8 +37,10 @@ databaseDefault = database.defaultDatabase; databaseDbUser = database.dbUser; databaseDbUserPassword = database.dbUserPassword; - if (database.type === 'mongodb') { - databaseDefault = '?readPreference=primary&ssl=false'; + if (database.type === 'mongodb' || database.type === 'edgedb') { + if (database.type === 'mongodb') { + databaseDefault = '?readPreference=primary&ssl=false'; + } databaseDbUser = database.rootUser; databaseDbUserPassword = database.rootUserPassword; } else if (database.type === 'redis') { @@ -205,6 +208,8 @@ {:else if database.type === 'couchdb'} + {:else if database.type === 'edgedb'} + {/if}
diff --git a/apps/ui/src/routes/databases/[id]/_Databases/_EdgeDB.svelte b/apps/ui/src/routes/databases/[id]/_Databases/_EdgeDB.svelte new file mode 100644 index 000000000..6007ed023 --- /dev/null +++ b/apps/ui/src/routes/databases/[id]/_Databases/_EdgeDB.svelte @@ -0,0 +1,53 @@ + + +
+
EdgeDB
+
+
+
+ + +
+
+ + +
+
+ + + +
+
diff --git a/apps/ui/src/routes/databases/[id]/configuration/type.svelte b/apps/ui/src/routes/databases/[id]/configuration/type.svelte index 006ad0a14..148b5a3f7 100644 --- a/apps/ui/src/routes/databases/[id]/configuration/type.svelte +++ b/apps/ui/src/routes/databases/[id]/configuration/type.svelte @@ -31,6 +31,7 @@ const { id } = $page.params; const from = $page.url.searchParams.get('from'); + import { goto } from '$app/navigation'; import { get, post } from '$lib/api'; import { t } from '$lib/translations'; @@ -55,7 +56,7 @@
handleSubmit(type.name)}>
diff --git a/apps/ui/src/routes/databases/index.svelte b/apps/ui/src/routes/databases/index.svelte index 04dbeb768..cdb45d0c4 100644 --- a/apps/ui/src/routes/databases/index.svelte +++ b/apps/ui/src/routes/databases/index.svelte @@ -73,7 +73,7 @@ {#each ownDatabases as database}