-- CreateTable CREATE TABLE "users" ( "id" TEXT NOT NULL PRIMARY KEY, "email" TEXT NOT NULL, "password_hash" TEXT NOT NULL, "name" TEXT NOT NULL, "role" TEXT NOT NULL DEFAULT 'super_admin', "is_active" BOOLEAN NOT NULL DEFAULT true, "created_at" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, "updated_at" DATETIME NOT NULL ); -- CreateTable CREATE TABLE "tenants" ( "id" TEXT NOT NULL PRIMARY KEY, "product" TEXT NOT NULL, "slug" TEXT NOT NULL, "name_fa" TEXT NOT NULL, "name_en" TEXT, "domain" TEXT NOT NULL, "domains" JSONB, "avatar_url" TEXT, "primary_color" TEXT, "secondary_color" TEXT, "background_color" TEXT, "node_server" TEXT NOT NULL, "node_ws" TEXT, "app_url" TEXT, "admin_url" TEXT, "remote_api_token" TEXT, "is_active" BOOLEAN NOT NULL DEFAULT true, "notes" TEXT, "created_at" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, "updated_at" DATETIME NOT NULL ); -- CreateTable CREATE TABLE "audit_logs" ( "id" TEXT NOT NULL PRIMARY KEY, "action" TEXT NOT NULL, "entity_type" TEXT NOT NULL, "entity_id" TEXT, "tenant_id" TEXT, "user_id" TEXT, "before" JSONB, "after" JSONB, "meta" JSONB, "created_at" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, CONSTRAINT "audit_logs_tenant_id_fkey" FOREIGN KEY ("tenant_id") REFERENCES "tenants" ("id") ON DELETE SET NULL ON UPDATE CASCADE, CONSTRAINT "audit_logs_user_id_fkey" FOREIGN KEY ("user_id") REFERENCES "users" ("id") ON DELETE SET NULL ON UPDATE CASCADE ); -- CreateIndex CREATE UNIQUE INDEX "users_email_key" ON "users"("email"); -- CreateIndex CREATE UNIQUE INDEX "tenants_slug_key" ON "tenants"("slug"); -- CreateIndex CREATE UNIQUE INDEX "tenants_domain_key" ON "tenants"("domain"); -- CreateIndex CREATE INDEX "tenants_product_idx" ON "tenants"("product"); -- CreateIndex CREATE INDEX "tenants_is_active_idx" ON "tenants"("is_active"); -- CreateIndex CREATE INDEX "audit_logs_tenant_id_idx" ON "audit_logs"("tenant_id"); -- CreateIndex CREATE INDEX "audit_logs_user_id_idx" ON "audit_logs"("user_id"); -- CreateIndex CREATE INDEX "audit_logs_created_at_idx" ON "audit_logs"("created_at");