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:
@@ -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");
|
||||
3
packages/database/prisma/migrations/migration_lock.toml
Normal file
3
packages/database/prisma/migrations/migration_lock.toml
Normal 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"
|
||||
36
packages/database/prisma/schema.prisma
Normal file
36
packages/database/prisma/schema.prisma
Normal 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")
|
||||
}
|
||||
Reference in New Issue
Block a user