mirror of
https://github.com/Dvorinka/Containr.git
synced 2026-10-28 15:51:26 +00:00
Databases hosted outside Containr can now be registered alongside
managed ones. The connection is probed before storing (protocol-level
for postgres/redis-family via real drivers, TCP dial for the rest),
credentials are encrypted at rest and never returned, and external rows
skip managed lifecycle actions, backups, and Docker metrics.
- POST /databases/register-external — probe + create
- POST /databases/test-connection — ad-hoc probe (ok/latency_ms/error)
- POST /databases/{id}/test-connection — re-probe stored credentials
- provider/external fields on database services; privileged reads get a
composed connection URL with loopback hosts rewritten to the caller's
- CLI: databases register + test-connection; MCP: 3 new tools
- UI: managed/external toggle in the create modal, external badge and
host display, per-row test button, backups section hidden
- Migration widens the plan CHECK to admit 'external'
Generated with [Devin](https://devin.ai)
Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
34 lines
1.3 KiB
SQL
34 lines
1.3 KiB
SQL
-- +goose Up
|
|
-- +goose StatementBegin
|
|
ALTER TABLE database_services
|
|
ADD COLUMN IF NOT EXISTS provider VARCHAR(20) NOT NULL DEFAULT 'managed',
|
|
ADD COLUMN IF NOT EXISTS external_host VARCHAR(255),
|
|
ADD COLUMN IF NOT EXISTS external_port INTEGER,
|
|
ADD COLUMN IF NOT EXISTS external_name VARCHAR(255),
|
|
ADD COLUMN IF NOT EXISTS external_username VARCHAR(255),
|
|
ADD COLUMN IF NOT EXISTS external_password TEXT NOT NULL DEFAULT '',
|
|
ADD COLUMN IF NOT EXISTS external_ssl BOOLEAN NOT NULL DEFAULT false;
|
|
|
|
ALTER TABLE database_services
|
|
DROP CONSTRAINT IF EXISTS database_services_plan_check,
|
|
ADD CONSTRAINT database_services_plan_check
|
|
CHECK (plan IN ('hobby', 'starter', 'standard', 'business', 'external'));
|
|
-- +goose StatementEnd
|
|
|
|
-- +goose Down
|
|
-- +goose StatementBegin
|
|
ALTER TABLE database_services
|
|
DROP CONSTRAINT IF EXISTS database_services_plan_check,
|
|
ADD CONSTRAINT database_services_plan_check
|
|
CHECK (plan IN ('hobby', 'starter', 'standard', 'business'));
|
|
|
|
ALTER TABLE database_services
|
|
DROP COLUMN IF EXISTS provider,
|
|
DROP COLUMN IF EXISTS external_host,
|
|
DROP COLUMN IF EXISTS external_port,
|
|
DROP COLUMN IF EXISTS external_name,
|
|
DROP COLUMN IF EXISTS external_username,
|
|
DROP COLUMN IF EXISTS external_password,
|
|
DROP COLUMN IF EXISTS external_ssl;
|
|
-- +goose StatementEnd
|