From b91e1685c02ec6cd73dfa4adc994d1998ceebace Mon Sep 17 00:00:00 2001 From: Carlos Narro Date: Sat, 30 May 2026 19:55:33 +0200 Subject: [PATCH] =?UTF-8?q?Add=20queries=20del=20=C3=A1rea=20admin?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mvp/b2c/src/db/admin-queries.ts | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 mvp/b2c/src/db/admin-queries.ts diff --git a/mvp/b2c/src/db/admin-queries.ts b/mvp/b2c/src/db/admin-queries.ts new file mode 100644 index 0000000..2869aab --- /dev/null +++ b/mvp/b2c/src/db/admin-queries.ts @@ -0,0 +1,33 @@ +import { eq } from 'drizzle-orm'; +import { db } from './index'; +import { tenants, users, plans } from './schema'; + +export async function listTenants() { + return db.select().from(tenants).orderBy(tenants.createdAt); +} + +export async function listUsers() { + return db.select().from(users).orderBy(users.createdAt); +} + +export async function listPlans() { + return db.select().from(plans).where(eq(plans.activo, true)).orderBy(plans.precioMensual); +} + +export async function assignPlan(tenantId: string, planId: string) { + await db.update(tenants).set({ planId }).where(eq(tenants.id, tenantId)); +} + +export async function setSubscriptionStatus( + tenantId: string, + status: (typeof tenants.subscriptionStatus.enumValues)[number] +) { + await db.update(tenants).set({ subscriptionStatus: status }).where(eq(tenants.id, tenantId)); +} + +export async function setUserStatus( + userId: string, + status: (typeof users.status.enumValues)[number] +) { + await db.update(users).set({ status, updatedAt: new Date() }).where(eq(users.id, userId)); +}