Files
pos-system/services/_template_nodejs/prisma/seed.ts
Ho Ngoc Hai 4e595d0746 feat(docs): Remove outdated service templates and enhance Vietnamese architecture documentation
- Deleted obsolete service architecture templates in both English and Vietnamese to streamline content.
- Updated the Vietnamese architecture documentation with improved Mermaid diagrams for better visual clarity.
- Enhanced color coding in diagrams to improve readability and consistency across documentation.
- Added a new section detailing visual indicators for better understanding of architecture components.
2026-01-10 21:00:02 +07:00

111 lines
3.3 KiB
TypeScript

import { PrismaClient } from '@prisma/client';
import { logger } from '@goodgo/logger';
// EN: Initialize Prisma client for seeding
// VI: Khởi tạo Prisma client cho seeding
const prisma = new PrismaClient();
async function main() {
logger.info('Starting database seeding / Bắt đầu seeding database');
// EN: Seed initial features
// VI: Seed các tính năng ban đầu
const features = [
{
name: 'health-checks',
title: 'Health Checks',
description: 'EN: System health monitoring endpoints / VI: Endpoints giám sát sức khỏe hệ thống',
enabled: true,
version: '1.0.0',
tags: ['system', 'monitoring'],
config: {
endpoints: ['/health', '/health/ready', '/health/live'],
interval: 30000, // 30 seconds
},
},
{
name: 'metrics',
title: 'Prometheus Metrics',
description: 'EN: Application metrics collection / VI: Thu thập metrics ứng dụng',
enabled: true,
version: '1.0.0',
tags: ['observability', 'monitoring'],
config: {
endpoint: '/metrics',
format: 'prometheus',
defaultMetrics: true,
},
},
{
name: 'rate-limiting',
title: 'Rate Limiting',
description: 'EN: API rate limiting protection / VI: Bảo vệ giới hạn tốc độ API',
enabled: true,
version: '1.0.0',
tags: ['security', 'performance'],
config: {
windowMs: 900000, // 15 minutes
max: 100, // limit each IP to 100 requests per windowMs
standardHeaders: true,
legacyHeaders: false,
},
},
{
name: 'cors',
title: 'CORS Protection',
description: 'EN: Cross-Origin Resource Sharing configuration / VI: Cấu hình Cross-Origin Resource Sharing',
enabled: true,
version: '1.0.0',
tags: ['security', 'api'],
config: {
origins: ['http://localhost:3000'],
credentials: true,
methods: ['GET', 'POST', 'PUT', 'DELETE', 'OPTIONS'],
},
},
{
name: 'tracing',
title: 'Distributed Tracing',
description: 'EN: Jaeger/OpenTelemetry distributed tracing / VI: Distributed tracing với Jaeger/OpenTelemetry',
enabled: false,
version: '1.0.0',
tags: ['observability', 'tracing'],
config: {
serviceName: 'microservice-template',
jaegerEndpoint: 'http://localhost:14268/api/traces',
samplingRate: 1.0,
},
},
];
// EN: Create features in database
// VI: Tạo features trong database
for (const feature of features) {
await prisma.feature.upsert({
where: { name: feature.name },
update: {
title: feature.title,
description: feature.description,
enabled: feature.enabled,
version: feature.version,
tags: feature.tags,
config: feature.config,
updatedAt: new Date(),
},
create: feature,
});
logger.info(`Seeded feature: ${feature.name} / Đã seed feature: ${feature.name}`);
}
logger.info('Database seeding completed / Hoàn thành seeding database');
}
main()
.catch((e) => {
logger.error('Error during database seeding / Lỗi trong quá trình seeding database', { error: e });
process.exit(1);
})
.finally(async () => {
await prisma.$disconnect();
});