feat: add admin dashboard schema and seeder

- Add Plan, Subscription, Payment, PaymentMethod, Coupon models
- Add ApiKey, Webhook models for API access
- Add AppConfig model for dynamic configuration
- Add role, suspendedAt fields to User model
- Create comprehensive seeder with:
  - Admin user (dwindi.ramadhana@gmail.com)
  - Default plans (Free, Pro Monthly, Pro Yearly)
  - Payment methods (BCA, Mandiri, GoPay)
  - App config (maintenance mode)
- Zero data loss migration strategy
This commit is contained in:
dwindown
2025-10-11 14:06:55 +07:00
parent 249f3a9d7d
commit c3bc181063
11 changed files with 1052 additions and 37 deletions

View File

@@ -13,11 +13,11 @@ export declare class TransactionsController {
id: string;
createdAt: Date;
userId: string;
walletId: string;
date: Date;
amount: import("@prisma/client/runtime/library").Decimal;
direction: string;
date: Date;
memo: string | null;
walletId: string;
recurrenceId: string | null;
}[]>;
create(req: RequestWithUser, walletId: string, body: {
@@ -31,11 +31,11 @@ export declare class TransactionsController {
id: string;
createdAt: Date;
userId: string;
walletId: string;
date: Date;
amount: import("@prisma/client/runtime/library").Decimal;
direction: string;
date: Date;
memo: string | null;
walletId: string;
recurrenceId: string | null;
}>;
exportCsv(req: RequestWithUser, walletId: string, from: string | undefined, to: string | undefined, category: string | undefined, direction: 'in' | 'out' | undefined, res: Response): Promise<void>;
@@ -44,11 +44,11 @@ export declare class TransactionsController {
id: string;
createdAt: Date;
userId: string;
walletId: string;
date: Date;
amount: import("@prisma/client/runtime/library").Decimal;
direction: string;
date: Date;
memo: string | null;
walletId: string;
recurrenceId: string | null;
}>;
delete(req: RequestWithUser, walletId: string, id: string): Promise<{
@@ -56,11 +56,11 @@ export declare class TransactionsController {
id: string;
createdAt: Date;
userId: string;
walletId: string;
date: Date;
amount: import("@prisma/client/runtime/library").Decimal;
direction: string;
date: Date;
memo: string | null;
walletId: string;
recurrenceId: string | null;
}>;
}

View File

@@ -9,11 +9,11 @@ export declare class TransactionsService {
id: string;
createdAt: Date;
userId: string;
walletId: string;
date: Date;
amount: Prisma.Decimal;
direction: string;
date: Date;
memo: string | null;
walletId: string;
recurrenceId: string | null;
}[]>;
listAll(userId: string): Prisma.PrismaPromise<{
@@ -21,11 +21,11 @@ export declare class TransactionsService {
id: string;
createdAt: Date;
userId: string;
walletId: string;
date: Date;
amount: Prisma.Decimal;
direction: string;
date: Date;
memo: string | null;
walletId: string;
recurrenceId: string | null;
}[]>;
listWithFilters(userId: string, walletId: string, filters: {
@@ -38,11 +38,11 @@ export declare class TransactionsService {
id: string;
createdAt: Date;
userId: string;
walletId: string;
date: Date;
amount: Prisma.Decimal;
direction: string;
date: Date;
memo: string | null;
walletId: string;
recurrenceId: string | null;
}[]>;
create(userId: string, walletId: string, input: {
@@ -56,11 +56,11 @@ export declare class TransactionsService {
id: string;
createdAt: Date;
userId: string;
walletId: string;
date: Date;
amount: Prisma.Decimal;
direction: string;
date: Date;
memo: string | null;
walletId: string;
recurrenceId: string | null;
}>;
update(userId: string, walletId: string, id: string, dto: TransactionUpdateDto): Promise<{
@@ -68,11 +68,11 @@ export declare class TransactionsService {
id: string;
createdAt: Date;
userId: string;
walletId: string;
date: Date;
amount: Prisma.Decimal;
direction: string;
date: Date;
memo: string | null;
walletId: string;
recurrenceId: string | null;
}>;
delete(userId: string, walletId: string, id: string): Promise<{
@@ -80,11 +80,11 @@ export declare class TransactionsService {
id: string;
createdAt: Date;
userId: string;
walletId: string;
date: Date;
amount: Prisma.Decimal;
direction: string;
date: Date;
memo: string | null;
walletId: string;
recurrenceId: string | null;
}>;
}