From e5973a066500fd6ab45efcaab9cc2f79cd86fbbd Mon Sep 17 00:00:00 2001 From: sebipap Date: Wed, 27 Dec 2023 11:57:46 -0300 Subject: [PATCH 1/2] =?UTF-8?q?=F0=9F=97=83=EF=B8=8F=20pomelo:=20db=20sche?= =?UTF-8?q?ma=20and=20migration=20setup?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 + bun.lockb | Bin 1001278 -> 1027286 bytes package.json | 1 + pomelo/README.md | 49 +++++++++++++++++++++++++++++++++++++ pomelo/database/index.ts | 6 +++++ pomelo/database/migrate.ts | 17 +++++++++++++ pomelo/database/schema.ts | 44 +++++++++++++++++++++++++++++++++ pomelo/package.json | 12 +++++++-- pomelo/utils/types.ts | 10 +++++--- 9 files changed, 135 insertions(+), 5 deletions(-) create mode 100644 pomelo/README.md create mode 100644 pomelo/database/index.ts create mode 100644 pomelo/database/migrate.ts create mode 100644 pomelo/database/schema.ts diff --git a/.gitignore b/.gitignore index 7f2eb0d1..c97e8def 100644 --- a/.gitignore +++ b/.gitignore @@ -5,6 +5,7 @@ node_modules/ build/ dist/ web-build/ +drizzle/ /android/ /ios/ diff --git a/bun.lockb b/bun.lockb index bae7dde1206da666839bd66367db7d7f0f5554f2..6e4e8bbb9d1a997766ae6d6c20657204c004018e 100755 GIT binary patch delta 72164 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

y*4XZG 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 Py1q&NhVItZ&` users.id) + .notNull(), + affinity_group_id: text("affinity_group_id").notNull(), + status: cardStatusEnum("status").notNull(), + last_four: text("last_four"), + payload: jsonb("payload").notNull(), +}); + +export const transaction = pgTable("transactions", { + id: text("id").primaryKey(), + card_id: text("card_id") + .references(() => card.id) + .notNull(), + user_id: text("user_id") + .references(() => users.id) + .notNull(), + settlement_amount: numeric("settlement_amount").notNull(), + txHash: text("txHash"), + transaction_status: transactionStatusEnum("transaction_status").notNull(), + payload: jsonb("payload").notNull(), +}); diff --git a/pomelo/package.json b/pomelo/package.json index 4d87caa7..f184135f 100644 --- a/pomelo/package.json +++ b/pomelo/package.json @@ -2,19 +2,27 @@ "name": "@exactly/pomelo", "type": "module", "scripts": { - "test": "tsc" + "test": "tsc", + "db:migration:generate": "drizzle-kit generate:pg --schema=./database/schema.ts", + "db:migration:push": "bun run database/migrate.ts", + "db:migrate": "bun db:migration:generate && bun db:migration:push", + "dev": "bun run --cwd .. vercel dev" }, "engines": { "node": ">=20.0.0" }, "dependencies": { "@vercel/node": "^3.0.11", + "@vercel/postgres": "^0.5.1", "@wagmi/core": "2.0.0-beta.6", + "drizzle-orm": "^0.29.1", "viem": "2.0.0-beta.15", - "zod": "^3.22.4" + "zod": "^3.22.4", + "debug": "^4.3.4" }, "devDependencies": { "@types/node": "^20.10.4", + "drizzle-kit": "^0.20.6", "typescript": "^5.3.3", "vercel": "^32.6.1" } diff --git a/pomelo/utils/types.ts b/pomelo/utils/types.ts index 7a39d5bd..9ac4a9a3 100644 --- a/pomelo/utils/types.ts +++ b/pomelo/utils/types.ts @@ -1,6 +1,10 @@ import { z } from "zod"; -const country = z.enum(["ARG", "BRA", "MEX", "COL", "PER", "CHL"]); +export const OPERATION_COUNTRIES = ["ARG", "BRA", "MEX", "COL", "PER", "CHL"] as const; +export const CARD_STATUS = ["ACTIVE", "BLOCKED", "DISABLED"] as const; +export const USER_STATUS = ["ACTIVE", "BLOCKED"] as const; + +const country = z.enum(OPERATION_COUNTRIES); const date = z.string(); @@ -49,7 +53,7 @@ export const user = z.object({ id: z.string().regex(/^usr-.*/), client_id: z.string().regex(/^cli-.*/), email: z.string().email(), - status: z.enum(["ACTIVE", "BLOCKED"]), + status: z.enum(USER_STATUS), operation_country: country, name: z.string().optional(), surname: z.string().optional(), @@ -80,7 +84,7 @@ export const card = z.object({ affinity_group_id: z.string().regex(/^afg-.*/), card_type: z.enum(["VIRTUAL", "PHYSICAL"]), product_type: z.enum(["PREPAID", "DEBIT", "CREDIT"]).optional(), - status: z.enum(["ACTIVE", "BLOCKED", "DISABLED"]).optional(), + status: z.enum(CARD_STATUS).optional(), shipment_id: z .string() .regex(/^shi-.*/) From e317a79602fef612341f9b6901fce5c286a9ab3b Mon Sep 17 00:00:00 2001 From: sebipap Date: Tue, 19 Dec 2023 15:30:19 -0300 Subject: [PATCH 2/2] =?UTF-8?q?=F0=9F=94=A7=20pomelo:=20use=20bundler=20mo?= =?UTF-8?q?dule=20resolution?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pomelo/tsconfig.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pomelo/tsconfig.json b/pomelo/tsconfig.json index fb0af27e..aea275ac 100644 --- a/pomelo/tsconfig.json +++ b/pomelo/tsconfig.json @@ -2,8 +2,8 @@ "compilerOptions": { "lib": ["ESNext"], "target": "ESNext", - "module": "NodeNext", - "moduleResolution": "NodeNext", + "module": "ESNext", + "moduleResolution": "Bundler", "noUncheckedIndexedAccess": true, "resolveJsonModule": true, "esModuleInterop": true,