devfactory-services-relational
Serviço multi-tenant de banco relacional da Dev Factory. Um SQL Server compartilhado
Endpoints HTTP 2
| Método | Rota | Arquivo |
|---|---|---|
| GET | /health | Program.cs |
| GET | /.metadata | Program.cs |
Estrutura
README
Dev Factory — Relational API
Serviço multi-tenant de banco relacional da Dev Factory. Um SQL Server compartilhado (RDS) atende todos os projetos; cada projeto×ambiente tem o seu próprio database (rel_{env}_df_{project}), criado automaticamente no primeiro uso.
As operações espelham o ADO.NET (System.Data):
| Operação | Endpoint | Equivalente C# |
|---|---|---|
| Query | POST /v1/projects/{p}/environments/{e}/query | ExecuteReader |
| Scalar | POST .../scalar | ExecuteScalar |
| NonQuery | POST .../nonquery | ExecuteNonQuery |
| Batch transacional | POST .../batch | SqlTransaction + N comandos |
| Tabelas | GET .../tables · GET .../database | INFORMATION_SCHEMA.TABLES |
| Preview (read-only) | GET .../tables/{t}/rows?top=&skip= | — (alimenta o Data Explorer) |
Corpo das operações SQL: { "sql": "...", "params": { "nome": "valor" } } — parâmetros viram @nome (sempre parametrize; nunca interpole valores no SQL).
Modos
| Modo | Quando | Backend |
|---|---|---|
sqlserver | RELATIONAL_SQL_CONNECTION definida | SQL Server (RDS compartilhado), dialeto T-SQL |
sqlite | default local | Arquivos SQLite (RELATIONAL_SQLITE_DIR, default temp) |
GET /health informa o modo/dialeto ativo.
Integração com a plataforma
O data plane do devfactory-apis-aws expõe o serviço como relational na gramática uniforme (/v1/projects/{p}/environments/{e}/relational/...), incluindo os custom verbs :query, :scalar e :nonquery, e o Data Explorer do console navega as tabelas (somente leitura).
Rodar local
dotnet run --project src/DevFactory.ApisRelational # SQLite, porta 8080, swagger em /swagger
Build & deploy
release/dev → GitHub Actions (ecr-dev) builda a imagem para o ECR devfactory-apis-relational; o deployment apis-relational no EKS (namespace devfactory-v1-dev) roda a imagem com a connection string do RDS via Secret.