feat: add typescript monorepo with pnpm workspaces and prisma database package

- root package.json + pnpm-workspace.yaml + tsconfig.base.json
- packages/types: canonical enums (TenantStatus, AgentState)
- packages/shared: re-exports types, base for future utilities
- packages/database: Prisma 7 schema with driver adapter (pg), initial
  tenants table matching agente.md section 29, first migration applied
This commit is contained in:
2026-08-27 23:22:38 -03:00
parent 2f130622d1
commit d1addb0a31
19 changed files with 1615 additions and 0 deletions

View File

@@ -0,0 +1,28 @@
-- CreateEnum
CREATE TYPE "tenant_status" AS ENUM ('TRIAL', 'ACTIVE', 'SUSPENDED', 'PAST_DUE', 'CANCELLED');
-- CreateTable
CREATE TABLE "tenants" (
"id" UUID NOT NULL,
"code" TEXT NOT NULL,
"slug" TEXT NOT NULL,
"legal_name" TEXT NOT NULL,
"trade_name" TEXT,
"tax_id" TEXT,
"status" "tenant_status" NOT NULL DEFAULT 'TRIAL',
"timezone" TEXT NOT NULL DEFAULT 'America/Sao_Paulo',
"locale" TEXT NOT NULL DEFAULT 'pt-BR',
"billing_currency" TEXT NOT NULL DEFAULT 'BRL',
"telephony_domain" TEXT,
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updated_at" TIMESTAMP(3) NOT NULL,
"deleted_at" TIMESTAMP(3),
CONSTRAINT "tenants_pkey" PRIMARY KEY ("id")
);
-- CreateIndex
CREATE UNIQUE INDEX "tenants_code_key" ON "tenants"("code");
-- CreateIndex
CREATE UNIQUE INDEX "tenants_slug_key" ON "tenants"("slug");

View File

@@ -0,0 +1,3 @@
# Please do not edit this file manually
# It should be added in your version-control system (e.g., Git)
provider = "postgresql"

View File

@@ -0,0 +1,36 @@
generator client {
provider = "prisma-client-js"
}
datasource db {
provider = "postgresql"
}
enum TenantStatus {
TRIAL
ACTIVE
SUSPENDED
PAST_DUE
CANCELLED
@@map("tenant_status")
}
model Tenant {
id String @id @default(uuid()) @db.Uuid
code String @unique
slug String @unique
legalName String @map("legal_name")
tradeName String? @map("trade_name")
taxId String? @map("tax_id")
status TenantStatus @default(TRIAL)
timezone String @default("America/Sao_Paulo")
locale String @default("pt-BR")
billingCurrency String @map("billing_currency") @default("BRL")
telephonyDomain String? @map("telephony_domain")
createdAt DateTime @default(now()) @map("created_at")
updatedAt DateTime @updatedAt @map("updated_at")
deletedAt DateTime? @map("deleted_at")
@@map("tenants")
}