rewrote all queries to drizzle

This commit is contained in:
John Yeo
2025-05-27 17:34:12 +01:00
parent e449771158
commit ae2391893d
206 changed files with 3025 additions and 3001 deletions

View File

@@ -0,0 +1,9 @@
export enum RewardTriggerEvent {
CustomerCreation = "customer_creation",
Checkout = "checkout",
}
export enum RewardReceivedBy {
Referrer = "referrer",
All = "all",
}

View File

@@ -0,0 +1,41 @@
import { z } from "zod";
import { Reward } from "../rewardModels/rewardModels.js";
import { RewardReceivedBy } from "./rewardProgramEnums.js";
import { RewardTriggerEvent } from "./rewardProgramEnums.js";
export const RewardProgram = z.object({
internal_id: z.string(),
id: z.string(),
when: z.nativeEnum(RewardTriggerEvent),
product_ids: z.array(z.string()).optional(),
exclude_trial: z.boolean().optional(),
internal_reward_id: z.string(),
unlimited_redemptions: z.boolean().optional(),
max_redemptions: z.number().optional(),
org_id: z.string(),
env: z.string(),
created_at: z.number(),
received_by: z.nativeEnum(RewardReceivedBy),
});
export const CreateRewardProgram = z.object({
id: z.string(),
when: z.nativeEnum(RewardTriggerEvent),
product_ids: z.array(z.string()).optional(),
exclude_trial: z.boolean().optional(),
internal_reward_id: z.string(),
max_redemptions: z.number().optional(),
received_by: z.nativeEnum(RewardReceivedBy),
});
export type RewardProgram = z.infer<typeof RewardProgram>;
export type CreateRewardProgram = z.infer<typeof CreateRewardProgram>;
export type FullRewardProgram = RewardProgram & {
reward: Reward;
};

View File

@@ -0,0 +1,10 @@
import { relations } from "drizzle-orm";
import { rewardPrograms } from "./rewardProgramTable.js";
import { rewards } from "../rewardModels/rewardTable.js";
export const rewardProgramRelations = relations(rewardPrograms, ({ one }) => ({
reward: one(rewards, {
fields: [rewardPrograms.internal_reward_id],
references: [rewards.internal_id],
}),
}));

View File

@@ -0,0 +1,34 @@
import { pgTable, text, foreignKey, boolean } from "drizzle-orm/pg-core";
import { numeric } from "drizzle-orm/pg-core";
import { organizations } from "../../orgModels/orgTable.js";
import { rewards } from "../rewardModels/rewardTable.js";
export const rewardPrograms = pgTable(
"reward_programs",
{
internal_id: text("internal_id").primaryKey().notNull(),
id: text(),
created_at: numeric({ mode: "number" }),
internal_reward_id: text("internal_reward_id"),
max_redemptions: numeric({ mode: "number" }),
unlimited_redemptions: boolean("unlimited_redemptions").default(false),
org_id: text("org_id"),
env: text(),
when: text().default("immediately"),
product_ids: text("product_ids").array().default([""]),
exclude_trial: boolean("exclude_trial").default(false),
received_by: text("received_by"),
},
(table) => [
foreignKey({
columns: [table.internal_reward_id],
foreignColumns: [rewards.internal_id],
name: "reward_triggers_internal_reward_id_fkey",
}).onDelete("cascade"),
foreignKey({
columns: [table.org_id],
foreignColumns: [organizations.id],
name: "reward_triggers_org_id_fkey",
}).onDelete("cascade"),
],
);