diff --git a/schema.dbml b/schema.dbml new file mode 100644 index 000000000..5823a8ff3 --- /dev/null +++ b/schema.dbml @@ -0,0 +1,1194 @@ +enum applicationStatus { + idle + running + done + error +} + +enum backupType { + database + compose +} + +enum buildType { + dockerfile + heroku_buildpacks + paketo_buildpacks + nixpacks + static + railpack +} + +enum certificateType { + letsencrypt + none + custom +} + +enum composeType { + "docker-compose" + stack +} + +enum databaseType { + postgres + mariadb + mysql + mongo + "web-server" +} + +enum deploymentStatus { + running + done + error + cancelled +} + +enum domainType { + compose + application + preview +} + +enum gitProviderType { + github + gitlab + bitbucket + gitea +} + +enum mountType { + bind + volume + file +} + +enum notificationType { + slack + telegram + discord + email + gotify + ntfy + custom + lark +} + +enum protocolType { + tcp + udp +} + +enum publishModeType { + ingress + host +} + +enum RegistryType { + selfHosted + cloud +} + +enum scheduleType { + application + compose + server + "dokploy-server" +} + +enum serverStatus { + active + inactive +} + +enum serviceType { + application + postgres + mysql + mariadb + mongo + redis + compose +} + +enum shellType { + bash + sh +} + +enum sourceType { + docker + git + github + gitlab + bitbucket + gitea + drop +} + +enum sourceTypeCompose { + git + github + gitlab + bitbucket + gitea + raw +} + +enum triggerType { + push + tag +} + +table account { + id text [pk, not null] + account_id text [not null] + provider_id text [not null] + user_id text [not null] + access_token text + refresh_token text + id_token text + access_token_expires_at timestamp + refresh_token_expires_at timestamp + scope text + password text + is2FAEnabled boolean [not null, default: false] + created_at timestamp [not null] + updated_at timestamp [not null] + resetPasswordToken text + resetPasswordExpiresAt text + confirmationToken text + confirmationExpiresAt text +} + +table ai { + aiId text [pk, not null] + name text [not null] + apiUrl text [not null] + apiKey text [not null] + model text [not null] + isEnabled boolean [not null, default: true] + organizationId text [not null] + createdAt text [not null] +} + +table apikey { + id text [pk, not null] + name text + start text + prefix text + key text [not null] + user_id text [not null] + refill_interval integer + refill_amount integer + last_refill_at timestamp + enabled boolean + rate_limit_enabled boolean + rate_limit_time_window integer + rate_limit_max integer + request_count integer + remaining integer + last_request timestamp + expires_at timestamp + created_at timestamp [not null] + updated_at timestamp [not null] + permissions text + metadata text +} + +table application { + applicationId text [pk, not null] + name text [not null] + appName text [not null, unique] + description text + env text + previewEnv text + watchPaths text[] + previewBuildArgs text + previewBuildSecrets text + previewLabels text[] + previewWildcard text + previewPort integer [default: 3000] + previewHttps boolean [not null, default: false] + previewPath text [default: '/'] + certificateType certificateType [not null, default: 'none'] + previewCustomCertResolver text + previewLimit integer [default: 3] + isPreviewDeploymentsActive boolean [default: false] + previewRequireCollaboratorPermissions boolean [default: true] + rollbackActive boolean [default: false] + buildArgs text + buildSecrets text + memoryReservation text + memoryLimit text + cpuReservation text + cpuLimit text + title text + enabled boolean + subtitle text + command text + refreshToken text + sourceType sourceType [not null, default: 'github'] + cleanCache boolean [default: false] + repository text + owner text + branch text + buildPath text [default: '/'] + triggerType triggerType [default: 'push'] + autoDeploy boolean + gitlabProjectId integer + gitlabRepository text + gitlabOwner text + gitlabBranch text + gitlabBuildPath text [default: '/'] + gitlabPathNamespace text + giteaRepository text + giteaOwner text + giteaBranch text + giteaBuildPath text [default: '/'] + bitbucketRepository text + bitbucketOwner text + bitbucketBranch text + bitbucketBuildPath text [default: '/'] + username text + password text + dockerImage text + registryUrl text + customGitUrl text + customGitBranch text + customGitBuildPath text + customGitSSHKeyId text + enableSubmodules boolean [not null, default: false] + dockerfile text + dockerContextPath text + dockerBuildStage text + dropBuildPath text + healthCheckSwarm json + restartPolicySwarm json + placementSwarm json + updateConfigSwarm json + rollbackConfigSwarm json + modeSwarm json + labelsSwarm json + networkSwarm json + stopGracePeriodSwarm bigint + replicas integer [not null, default: 1] + applicationStatus applicationStatus [not null, default: 'idle'] + buildType buildType [not null, default: 'nixpacks'] + railpackVersion text [default: '0.2.2'] + herokuVersion text [default: '24'] + publishDirectory text + isStaticSpa boolean + createdAt text [not null] + registryId text + environmentId text [not null] + githubId text + gitlabId text + giteaId text + bitbucketId text + serverId text +} + +table backup { + backupId text [pk, not null] + appName text [not null, unique] + schedule text [not null] + enabled boolean + database text [not null] + prefix text [not null] + serviceName text + destinationId text [not null] + keepLatestCount integer + backupType backupType [not null, default: 'database'] + databaseType databaseType [not null] + composeId text + postgresId text + mariadbId text + mysqlId text + mongoId text + userId text + metadata jsonb +} + +table bitbucket { + bitbucketId text [pk, not null] + bitbucketUsername text + bitbucketEmail text + appPassword text + apiToken text + bitbucketWorkspaceName text + gitProviderId text [not null] +} + +table certificate { + certificateId text [pk, not null] + name text [not null] + certificateData text [not null] + privateKey text [not null] + certificatePath text [not null, unique] + autoRenew boolean + organizationId text [not null] + serverId text +} + +table compose { + composeId text [pk, not null] + name text [not null] + appName text [not null] + description text + env text + composeFile text [not null, default: ''] + refreshToken text + sourceType sourceTypeCompose [not null, default: 'github'] + composeType composeType [not null, default: 'docker-compose'] + repository text + owner text + branch text + autoDeploy boolean + gitlabProjectId integer + gitlabRepository text + gitlabOwner text + gitlabBranch text + gitlabPathNamespace text + bitbucketRepository text + bitbucketOwner text + bitbucketBranch text + giteaRepository text + giteaOwner text + giteaBranch text + customGitUrl text + customGitBranch text + customGitSSHKeyId text + command text [not null, default: ''] + enableSubmodules boolean [not null, default: false] + composePath text [not null, default: './docker-compose.yml'] + suffix text [not null, default: ''] + randomize boolean [not null, default: false] + isolatedDeployment boolean [not null, default: false] + isolatedDeploymentsVolume boolean [not null, default: false] + triggerType triggerType [default: 'push'] + composeStatus applicationStatus [not null, default: 'idle'] + environmentId text [not null] + createdAt text [not null] + watchPaths text[] + githubId text + gitlabId text + bitbucketId text + giteaId text + serverId text +} + +table custom { + customId text [pk, not null] + endpoint text [not null] + headers text +} + +table deployment { + deploymentId text [pk, not null] + title text [not null] + description text + status deploymentStatus [default: 'running'] + logPath text [not null] + pid text + applicationId text + composeId text + serverId text + isPreviewDeployment boolean [default: false] + previewDeploymentId text + createdAt text [not null] + startedAt text + finishedAt text + errorMessage text + scheduleId text + backupId text + rollbackId text + volumeBackupId text +} + +table destination { + destinationId text [pk, not null] + name text [not null] + provider text + accessKey text [not null] + secretAccessKey text [not null] + bucket text [not null] + region text [not null] + endpoint text [not null] + organizationId text [not null] + createdAt timestamp [not null, default: `now()`] +} + +table discord { + discordId text [pk, not null] + webhookUrl text [not null] + decoration boolean +} + +table domain { + domainId text [pk, not null] + host text [not null] + https boolean [not null, default: false] + port integer [default: 3000] + path text [default: '/'] + serviceName text + domainType domainType [default: 'application'] + uniqueConfigKey serial [not null, increment] + createdAt text [not null] + composeId text + customCertResolver text + applicationId text + previewDeploymentId text + certificateType certificateType [not null, default: 'none'] + internalPath text [default: '/'] + stripPath boolean [not null, default: false] +} + +table email { + emailId text [pk, not null] + smtpServer text [not null] + smtpPort integer [not null] + username text [not null] + password text [not null] + fromAddress text [not null] + toAddress text[] [not null] +} + +table environment { + environmentId text [pk, not null] + name text [not null] + description text + createdAt text [not null] + env text [not null, default: ''] + projectId text [not null] +} + +table git_provider { + gitProviderId text [pk, not null] + name text [not null] + providerType gitProviderType [not null, default: 'github'] + createdAt text [not null] + organizationId text [not null] + userId text [not null] +} + +table gitea { + giteaId text [pk, not null] + giteaUrl text [not null, default: 'https://gitea.com'] + redirect_uri text + client_id text + client_secret text + gitProviderId text [not null] + access_token text + refresh_token text + expires_at integer + scopes text [default: 'repo,repo:status,read:user,read:org'] + last_authenticated_at integer +} + +table github { + githubId text [pk, not null] + githubAppName text + githubAppId integer + githubClientId text + githubClientSecret text + githubInstallationId text + githubPrivateKey text + githubWebhookSecret text + gitProviderId text [not null] +} + +table gitlab { + gitlabId text [pk, not null] + gitlabUrl text [not null, default: 'https://gitlab.com'] + application_id text + redirect_uri text + secret text + access_token text + refresh_token text + group_name text + expires_at integer + gitProviderId text [not null] +} + +table gotify { + gotifyId text [pk, not null] + serverUrl text [not null] + appToken text [not null] + priority integer [not null, default: 5] + decoration boolean +} + +table invitation { + id text [pk, not null] + organization_id text [not null] + email text [not null] + role text + status text [not null] + expires_at timestamp [not null] + inviter_id text [not null] + team_id text +} + +table lark { + larkId text [pk, not null] + webhookUrl text [not null] +} + +table mariadb { + mariadbId text [pk, not null] + name text [not null] + appName text [not null, unique] + description text + databaseName text [not null] + databaseUser text [not null] + databasePassword text [not null] + rootPassword text [not null] + dockerImage text [not null] + command text + env text + memoryReservation text + memoryLimit text + cpuReservation text + cpuLimit text + externalPort integer + applicationStatus applicationStatus [not null, default: 'idle'] + healthCheckSwarm json + restartPolicySwarm json + placementSwarm json + updateConfigSwarm json + rollbackConfigSwarm json + modeSwarm json + labelsSwarm json + networkSwarm json + stopGracePeriodSwarm bigint + replicas integer [not null, default: 1] + createdAt text [not null] + environmentId text [not null] + serverId text +} + +table member { + id text [pk, not null] + organization_id text [not null] + user_id text [not null] + role text [not null] + created_at timestamp [not null] + team_id text + is_default boolean [not null, default: false] + canCreateProjects boolean [not null, default: false] + canAccessToSSHKeys boolean [not null, default: false] + canCreateServices boolean [not null, default: false] + canDeleteProjects boolean [not null, default: false] + canDeleteServices boolean [not null, default: false] + canAccessToDocker boolean [not null, default: false] + canAccessToAPI boolean [not null, default: false] + canAccessToGitProviders boolean [not null, default: false] + canAccessToTraefikFiles boolean [not null, default: false] + canDeleteEnvironments boolean [not null, default: false] + canCreateEnvironments boolean [not null, default: false] + accesedProjects text[] [not null, default: `ARRAY[]::text[]`] + accessedEnvironments text[] [not null, default: `ARRAY[]::text[]`] + accesedServices text[] [not null, default: `ARRAY[]::text[]`] +} + +table mongo { + mongoId text [pk, not null] + name text [not null] + appName text [not null, unique] + description text + databaseUser text [not null] + databasePassword text [not null] + dockerImage text [not null] + command text + env text + memoryReservation text + memoryLimit text + cpuReservation text + cpuLimit text + externalPort integer + applicationStatus applicationStatus [not null, default: 'idle'] + healthCheckSwarm json + restartPolicySwarm json + placementSwarm json + updateConfigSwarm json + rollbackConfigSwarm json + modeSwarm json + labelsSwarm json + networkSwarm json + stopGracePeriodSwarm bigint + replicas integer [not null, default: 1] + createdAt text [not null] + environmentId text [not null] + serverId text + replicaSets boolean [default: false] +} + +table mount { + mountId text [pk, not null] + type mountType [not null] + hostPath text + volumeName text + filePath text + content text + serviceType serviceType [not null, default: 'application'] + mountPath text [not null] + applicationId text + postgresId text + mariadbId text + mongoId text + mysqlId text + redisId text + composeId text +} + +table mysql { + mysqlId text [pk, not null] + name text [not null] + appName text [not null, unique] + description text + databaseName text [not null] + databaseUser text [not null] + databasePassword text [not null] + rootPassword text [not null] + dockerImage text [not null] + command text + env text + memoryReservation text + memoryLimit text + cpuReservation text + cpuLimit text + externalPort integer + applicationStatus applicationStatus [not null, default: 'idle'] + healthCheckSwarm json + restartPolicySwarm json + placementSwarm json + updateConfigSwarm json + rollbackConfigSwarm json + modeSwarm json + labelsSwarm json + networkSwarm json + stopGracePeriodSwarm bigint + replicas integer [not null, default: 1] + createdAt text [not null] + environmentId text [not null] + serverId text +} + +table notification { + notificationId text [pk, not null] + name text [not null] + appDeploy boolean [not null, default: false] + appBuildError boolean [not null, default: false] + databaseBackup boolean [not null, default: false] + dokployRestart boolean [not null, default: false] + dockerCleanup boolean [not null, default: false] + serverThreshold boolean [not null, default: false] + notificationType notificationType [not null] + createdAt text [not null] + slackId text + telegramId text + discordId text + emailId text + gotifyId text + ntfyId text + customId text + larkId text + organizationId text [not null] +} + +table ntfy { + ntfyId text [pk, not null] + serverUrl text [not null] + topic text [not null] + accessToken text [not null] + priority integer [not null, default: 3] +} + +table organization { + id text [pk, not null] + name text [not null] + slug text [unique] + logo text + created_at timestamp [not null] + metadata text + owner_id text [not null] +} + +table port { + portId text [pk, not null] + publishedPort integer [not null] + publishMode publishModeType [not null, default: 'host'] + targetPort integer [not null] + protocol protocolType [not null] + applicationId text [not null] +} + +table postgres { + postgresId text [pk, not null] + name text [not null] + appName text [not null, unique] + databaseName text [not null] + databaseUser text [not null] + databasePassword text [not null] + description text + dockerImage text [not null] + command text + env text + memoryReservation text + externalPort integer + memoryLimit text + cpuReservation text + cpuLimit text + applicationStatus applicationStatus [not null, default: 'idle'] + healthCheckSwarm json + restartPolicySwarm json + placementSwarm json + updateConfigSwarm json + rollbackConfigSwarm json + modeSwarm json + labelsSwarm json + networkSwarm json + stopGracePeriodSwarm bigint + replicas integer [not null, default: 1] + createdAt text [not null] + environmentId text [not null] + serverId text +} + +table preview_deployments { + previewDeploymentId text [pk, not null] + branch text [not null] + pullRequestId text [not null] + pullRequestNumber text [not null] + pullRequestURL text [not null] + pullRequestTitle text [not null] + pullRequestCommentId text [not null] + previewStatus applicationStatus [not null, default: 'idle'] + appName text [not null, unique] + applicationId text [not null] + domainId text + createdAt text [not null] + expiresAt text +} + +table project { + projectId text [pk, not null] + name text [not null] + description text + createdAt text [not null] + organizationId text [not null] + env text [not null, default: ''] +} + +table redirect { + redirectId text [pk, not null] + regex text [not null] + replacement text [not null] + permanent boolean [not null, default: false] + uniqueConfigKey serial [not null, increment] + createdAt text [not null] + applicationId text [not null] +} + +table redis { + redisId text [pk, not null] + name text [not null] + appName text [not null, unique] + description text + password text [not null] + dockerImage text [not null] + command text + env text + memoryReservation text + memoryLimit text + cpuReservation text + cpuLimit text + externalPort integer + createdAt text [not null] + applicationStatus applicationStatus [not null, default: 'idle'] + healthCheckSwarm json + restartPolicySwarm json + placementSwarm json + updateConfigSwarm json + rollbackConfigSwarm json + modeSwarm json + labelsSwarm json + networkSwarm json + stopGracePeriodSwarm bigint + replicas integer [not null, default: 1] + environmentId text [not null] + serverId text +} + +table registry { + registryId text [pk, not null] + registryName text [not null] + imagePrefix text + username text [not null] + password text [not null] + registryUrl text [not null, default: ''] + createdAt text [not null] + selfHosted RegistryType [not null, default: 'cloud'] + organizationId text [not null] +} + +table rollback { + rollbackId text [pk, not null] + deploymentId text [not null] + version serial [not null, increment] + image text + createdAt text [not null] + fullContext jsonb +} + +table schedule { + scheduleId text [pk, not null] + name text [not null] + cronExpression text [not null] + appName text [not null] + serviceName text + shellType shellType [not null, default: 'bash'] + scheduleType scheduleType [not null, default: 'application'] + command text [not null] + script text + applicationId text + composeId text + serverId text + userId text + enabled boolean [not null, default: true] + createdAt text [not null] +} + +table security { + securityId text [pk, not null] + username text [not null] + password text [not null] + createdAt text [not null] + applicationId text [not null] + + indexes { + (username, applicationId) [name: 'security_username_applicationId_unique', unique] + } +} + +table server { + serverId text [pk, not null] + name text [not null] + description text + ipAddress text [not null] + port integer [not null] + username text [not null, default: 'root'] + appName text [not null] + enableDockerCleanup boolean [not null, default: false] + createdAt text [not null] + organizationId text [not null] + serverStatus serverStatus [not null, default: 'active'] + command text [not null, default: ''] + sshKeyId text + metricsConfig jsonb [not null, default: `{"server":{"type":"Remote","refreshRate":60,"port":4500,"token":"","urlCallback":"","cronJob":"","retentionDays":2,"thresholds":{"cpu":0,"memory":0}},"containers":{"refreshRate":60,"services":{"include":[],"exclude":[]}}}`] +} + +table session_temp { + id text [pk, not null] + expires_at timestamp [not null] + token text [not null, unique] + created_at timestamp [not null] + updated_at timestamp [not null] + ip_address text + user_agent text + user_id text [not null] + impersonated_by text + active_organization_id text +} + +table slack { + slackId text [pk, not null] + webhookUrl text [not null] + channel text +} + +table "ssh-key" { + sshKeyId text [pk, not null] + privateKey text [not null, default: ''] + publicKey text [not null] + name text [not null] + description text + createdAt text [not null] + lastUsedAt text + organizationId text [not null] +} + +table telegram { + telegramId text [pk, not null] + botToken text [not null] + chatId text [not null] + messageThreadId text +} + +table two_factor { + id text [pk, not null] + secret text [not null] + backup_codes text [not null] + user_id text [not null] +} + +table user_temp { + id text [pk, not null] + name text [not null, default: ''] + isRegistered boolean [not null, default: false] + expirationDate text [not null] + createdAt text [not null] + created_at timestamp [default: `now()`] + two_factor_enabled boolean + email text [not null, unique] + email_verified boolean [not null] + image text + banned boolean + ban_reason text + ban_expires timestamp + updated_at timestamp [not null] + serverIp text + certificateType certificateType [not null, default: 'none'] + https boolean [not null, default: false] + host text + letsEncryptEmail text + sshPrivateKey text + enableDockerCleanup boolean [not null, default: false] + logCleanupCron text [default: '0 0 * * *'] + role text [not null, default: 'user'] + enablePaidFeatures boolean [not null, default: false] + allowImpersonation boolean [not null, default: false] + metricsConfig jsonb [not null, default: `{"server":{"type":"Dokploy","refreshRate":60,"port":4500,"token":"","retentionDays":2,"cronJob":"","urlCallback":"","thresholds":{"cpu":0,"memory":0}},"containers":{"refreshRate":60,"services":{"include":[],"exclude":[]}}}`] + cleanupCacheApplications boolean [not null, default: false] + cleanupCacheOnPreviews boolean [not null, default: false] + cleanupCacheOnCompose boolean [not null, default: false] + stripeCustomerId text + stripeSubscriptionId text + serversQuantity integer [not null, default: 0] +} + +table verification { + id text [pk, not null] + identifier text [not null] + value text [not null] + expires_at timestamp [not null] + created_at timestamp + updated_at timestamp +} + +table volume_backup { + volumeBackupId text [pk, not null] + name text [not null] + volumeName text [not null] + prefix text [not null] + serviceType serviceType [not null, default: 'application'] + appName text [not null] + serviceName text + turnOff boolean [not null, default: false] + cronExpression text [not null] + keepLatestCount integer + enabled boolean + applicationId text + postgresId text + mariadbId text + mongoId text + mysqlId text + redisId text + composeId text + createdAt text [not null] + destinationId text [not null] +} + +ref: mount.applicationId > application.applicationId + +ref: mount.postgresId > postgres.postgresId + +ref: mount.mariadbId > mariadb.mariadbId + +ref: mount.mongoId > mongo.mongoId + +ref: mount.mysqlId > mysql.mysqlId + +ref: mount.redisId > redis.redisId + +ref: mount.composeId > compose.composeId + +ref: user_temp.id - account.user_id + +ref: ai.organizationId - organization.id + +ref: apikey.user_id > user_temp.id + +ref: application.environmentId > environment.environmentId + +ref: application.customGitSSHKeyId > "ssh-key".sshKeyId + +ref: application.registryId > registry.registryId + +ref: application.githubId - github.githubId + +ref: application.gitlabId - gitlab.gitlabId + +ref: application.giteaId - gitea.giteaId + +ref: application.bitbucketId - bitbucket.bitbucketId + +ref: application.serverId > server.serverId + +ref: backup.destinationId > destination.destinationId + +ref: backup.postgresId > postgres.postgresId + +ref: backup.mariadbId > mariadb.mariadbId + +ref: backup.mysqlId > mysql.mysqlId + +ref: backup.mongoId > mongo.mongoId + +ref: backup.userId > user_temp.id + +ref: backup.composeId > compose.composeId + +ref: git_provider.gitProviderId - bitbucket.gitProviderId + +ref: certificate.serverId > server.serverId + +ref: certificate.organizationId - organization.id + +ref: compose.environmentId > environment.environmentId + +ref: compose.customGitSSHKeyId > "ssh-key".sshKeyId + +ref: compose.githubId - github.githubId + +ref: compose.gitlabId - gitlab.gitlabId + +ref: compose.bitbucketId - bitbucket.bitbucketId + +ref: compose.giteaId - gitea.giteaId + +ref: compose.serverId > server.serverId + +ref: deployment.applicationId > application.applicationId + +ref: deployment.composeId > compose.composeId + +ref: deployment.serverId > server.serverId + +ref: deployment.previewDeploymentId > preview_deployments.previewDeploymentId + +ref: deployment.scheduleId > schedule.scheduleId + +ref: deployment.backupId > backup.backupId + +ref: rollback.deploymentId - deployment.deploymentId + +ref: deployment.volumeBackupId > volume_backup.volumeBackupId + +ref: destination.organizationId - organization.id + +ref: domain.applicationId > application.applicationId + +ref: domain.composeId > compose.composeId + +ref: preview_deployments.domainId - domain.domainId + +ref: environment.projectId > project.projectId + +ref: github.gitProviderId - git_provider.gitProviderId + +ref: gitlab.gitProviderId - git_provider.gitProviderId + +ref: gitea.gitProviderId - git_provider.gitProviderId + +ref: git_provider.organizationId - organization.id + +ref: git_provider.userId - user_temp.id + +ref: invitation.organization_id - organization.id + +ref: mariadb.environmentId > environment.environmentId + +ref: mariadb.serverId > server.serverId + +ref: member.organization_id > organization.id + +ref: member.user_id - user_temp.id + +ref: mongo.environmentId > environment.environmentId + +ref: mongo.serverId > server.serverId + +ref: mysql.environmentId > environment.environmentId + +ref: mysql.serverId > server.serverId + +ref: notification.slackId - slack.slackId + +ref: notification.telegramId - telegram.telegramId + +ref: notification.discordId - discord.discordId + +ref: notification.emailId - email.emailId + +ref: notification.gotifyId - gotify.gotifyId + +ref: notification.ntfyId - ntfy.ntfyId + +ref: notification.customId - custom.customId + +ref: notification.larkId - lark.larkId + +ref: notification.organizationId - organization.id + +ref: organization.owner_id > user_temp.id + +ref: port.applicationId > application.applicationId + +ref: postgres.environmentId > environment.environmentId + +ref: postgres.serverId > server.serverId + +ref: preview_deployments.applicationId > application.applicationId + +ref: project.organizationId > organization.id + +ref: redirect.applicationId > application.applicationId + +ref: redis.environmentId > environment.environmentId + +ref: redis.serverId > server.serverId + +ref: schedule.applicationId - application.applicationId + +ref: schedule.composeId > compose.composeId + +ref: schedule.serverId > server.serverId + +ref: schedule.userId > user_temp.id + +ref: security.applicationId > application.applicationId + +ref: server.sshKeyId > "ssh-key".sshKeyId + +ref: server.organizationId > organization.id + +ref: "ssh-key".organizationId - organization.id + +ref: volume_backup.applicationId - application.applicationId + +ref: volume_backup.postgresId - postgres.postgresId + +ref: volume_backup.mariadbId - mariadb.mariadbId + +ref: volume_backup.mongoId - mongo.mongoId + +ref: volume_backup.mysqlId - mysql.mysqlId + +ref: volume_backup.redisId - redis.redisId + +ref: volume_backup.composeId - compose.composeId + +ref: volume_backup.destinationId - destination.destinationId \ No newline at end of file