Fixes #7528 — database services in Docker Compose files deployed via GitHub App (dockercompose buildpack) now get ServiceDatabase records created, enabling scheduled backup support.
/claim #7528
parseDockerComposeFile() branches on Service vs Application resource type. The Service path created ServiceDatabase records for detected database images. The Application path called isDatabaseImage() but never created those records, so backup support was silently missing for all GitHub-App-deployed compose databases.
application_id column + index to service_databasesservice_id nullable — a ServiceDatabase can now belong to either a Service or an ApplicationServiceDatabase modelapplication() — new belongsTo(Application::class) relationshipgetParentResource() — returns the owning Service or ApplicationgetServer() — resolves server via either parent pathownedByCurrentTeam/API() — updated to include Application-owned databases via orWhereRelationrestart() — updated to handle both parent typesApplication modelserviceDatabases() — new hasMany(ServiceDatabase::class) relationshipbootstrap/helpers/shared.php)parseDockerComposeFile() now creates/upserts ServiceDatabase records for detected DB images (skipped for PR previews)ServiceDatabase records when services are removed from the compose fileDatabaseBackupJob$this->database->getServer() (works for both Service and Application parents)getParentResource()->uuid$parent->destination->networkapp/Livewire/Project/Application/DatabaseBackups.php — Livewire componentresources/views/livewire/project/application/database-backups.blade.php — blade viewproject.application.compose.database.backups at /{application_uuid}/{stack_service_uuid}/backupstests/Feature/ApplicationComposeDatabaseBackupsTest.php)getServer() and getParentResource() for Application-owned databasesisBackupSolutionAvailable() for various image typesserviceDatabases() scoping between multiple applicationsjunyuc25
@junyuc25
Ilias Ism
@me