- NestJS + TypeScript + Prisma + PostgreSQL 工程骨架 - 微信登录安全流程:服务端 code2Session 换 openid 后签发 JWT, session_key 缓存于 Redis,不信任前端 openid - 统一响应/异常处理、JWT 全局鉴权(@Public 豁免)、Swagger 文档 - Prisma 全量核心 schema(用户/分类/商品/设计清单/地址/订单/支付/上传/定制任务)+ seed - 业务模块空壳(商品/分类/设计清单/地址/订单/支付/上传/BullMQ 队列) - Docker 多阶段镜像 + 本地/生产 docker-compose - docs:密钥获取指南、COS SDK 移除记录 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
47 lines
1.1 KiB
TypeScript
47 lines
1.1 KiB
TypeScript
import { PrismaClient } from '@prisma/client';
|
|
|
|
const prisma = new PrismaClient();
|
|
|
|
async function main() {
|
|
// 分类
|
|
const apparel = await prisma.category.upsert({
|
|
where: { id: 'cat-apparel' },
|
|
update: {},
|
|
create: { id: 'cat-apparel', name: '服饰', sort: 1 },
|
|
});
|
|
|
|
const tshirt = await prisma.category.upsert({
|
|
where: { id: 'cat-tshirt' },
|
|
update: {},
|
|
create: { id: 'cat-tshirt', name: 'T恤', parentId: apparel.id, sort: 1 },
|
|
});
|
|
|
|
// 示例商品
|
|
await prisma.product.upsert({
|
|
where: { id: 'prod-demo-tshirt' },
|
|
update: {},
|
|
create: {
|
|
id: 'prod-demo-tshirt',
|
|
name: '示例定制 T恤',
|
|
categoryId: tshirt.id,
|
|
price: 99.0,
|
|
images: [],
|
|
description: '用于本地开发联调的示例商品,可在此设计清单中上传自定义图案。',
|
|
status: 'ON_SALE',
|
|
},
|
|
});
|
|
|
|
// eslint-disable-next-line no-console
|
|
console.log('Seed 完成:分类 + 示例商品已写入');
|
|
}
|
|
|
|
main()
|
|
.catch((e) => {
|
|
// eslint-disable-next-line no-console
|
|
console.error(e);
|
|
process.exit(1);
|
|
})
|
|
.finally(async () => {
|
|
await prisma.$disconnect();
|
|
});
|