ZH
测试版翻译

@core / cart

1.1.0 ▾
已验证MIT
GitHub

购物车:签名访客 Cookie、登录时合并、服务端定价和可扩展的金额计算流水线

代码10 个文件上下文约 611 个 token扫描通过

应用 .genpmignore 后将被注入的确切目录树。固定于

src/lib/cart/schema.ts只读 · 787ea88
// Tablas de @core/cart. Las recoge drizzle-kit vía src/lib/db/drizzle.config.ts.
import { index, integer, jsonb, pgTable, primaryKey, text, timestamp } from 'drizzle-orm/pg-core';
import { users } from '../auth/index.ts';
import { productVariants } from '../catalog/index.ts';
import { primaryId, timestamps } from '../db/index.ts';

export const carts = pgTable(
  'carts',
  {
    id: primaryId('crt'),
    userId: text('user_id').references(() => users.id, { onDelete: 'cascade' }),
    currency: text('currency').notNull(),
    /** Códigos introducidos por el cliente (los valida @core/discounts al calcular). */
    discountCodes: jsonb('discount_codes').$type<string[]>().notNull().default([]),
    /** Datos que eligen otros pasos (tarifa de envío, país…). */
    meta: jsonb('meta').$type<Record<string, string>>().notNull().default({}),
    expiresAt: timestamp('expires_at', { withTimezone: true, mode: 'date' }).notNull(),
    ...timestamps,
  },
  (t) => [index('carts_user_idx').on(t.userId), index('carts_expires_idx').on(t.expiresAt)],
);

export const cartLines = pgTable(
  'cart_lines',
  {
    cartId: text('cart_id')
      .notNull()
      .references(() => carts.id, { onDelete: 'cascade' }),
    variantId: text('variant_id')
      .notNull()
      .references(() => productVariants.id, { onDelete: 'cascade' }),
    quantity: integer('quantity').notNull(),
    ...timestamps,
  },
  (t) => [primaryKey({ columns: [t.cartId, t.variantId] })],
);

export type Cart = typeof carts.$inferSelect;

举报 @core/cart

使用 GitHub 登录后才能举报包。