import { sql } from "drizzle-orm";
import {
  int,
  timestamp,
  mysqlTable,
  varchar,
  text,
  date,
} from "drizzle-orm/mysql-core";
import { users } from "@/schema/users";
{{pkStrategyImport}}

export const stripeWebhooks = mysqlTable("stripe_webhooks", {
  {{pkText}}
  payload: text(),
  {{createdAtTemplate}}
  {{updatedAtTemplate}}
});

export const products = mysqlTable("products", {
  {{pkText}}
  slug: varchar({ length: 255 }).unique(),
  stripeProductId: varchar({ length: 255 }).notNull().unique(),
  stripePriceId: varchar({ length: 255 }).notNull(),
  name: varchar({ length: 255 }).notNull(),
  price: int().notNull(),
  description: text(),
  mode: varchar({ length: 255 }).notNull(),
  {{createdAtTemplate}}
  {{updatedAtTemplate}}
});

export const orders = mysqlTable("orders", {
  {{pkText}}
  userId: varchar({ length: 255 }).notNull().references(() => users.id),
  productId: varchar({ length: 255 }).references(() => products.id),
  note: varchar({ length: 255 }),
  amountTotal: int().notNull(),
  {{createdAtTemplate}}
  {{updatedAtTemplate}}
});

export const subscriptions = mysqlTable("subscriptions", {
  {{pkText}}
  userId: varchar({ length: 255 }).notNull().references(() => users.id),
  stripeCustomerId: varchar({ length: 255 }).notNull(),
  startDate: date({ mode: "date" }).notNull(),
  endDate: date({ mode: "date" }).notNull(),
  {{createdAtTemplate}}
  {{updatedAtTemplate}}
});