- Backend: NestJS + Prisma 7 (MariaDB adapter) scaffold - PrismaService with @prisma/adapter-mariadb driver - SistersService: SSH 상태 체크 with graceful fallback - HealthController: GET /health - 시드 스크립트: 자매 4명 초기 데이터 - 테스트 5/5 pass - Frontend: Next.js 16 + styled-components - styled-components SSR registry (next.config 컴파일러) - 다크 테마 글로벌 스타일 + 테마 토큰 - SisterCard: glassmorphism 상태 카드 (온라인 pulse 애니메이션) - StatusBadge: 상태 표시 컴포넌트 - Sidebar: 접이식 네비게이션 - 대시보드 메인 페이지 (API 미연결 시 mock 데이터 fallback) - build 성공 확인 - DB credential 이랑이 대기 중
41 lines
1.1 KiB
TypeScript
41 lines
1.1 KiB
TypeScript
import { PrismaClient } from '@prisma/client';
|
|
import { PrismaMariaDb } from '@prisma/adapter-mariadb';
|
|
import * as dotenv from 'dotenv';
|
|
|
|
dotenv.config();
|
|
|
|
const dbUrl = process.env.DATABASE_URL ?? '';
|
|
const adapter = new PrismaMariaDb(dbUrl);
|
|
const prisma = new PrismaClient({ adapter });
|
|
|
|
async function main() {
|
|
console.log('🌱 Seeding SisterConfig...');
|
|
|
|
const sisters = [
|
|
{ name: 'harang', ip: '10.10.10.112', user: 'harang', lxcId: 104 },
|
|
{ name: 'narang', ip: '10.10.10.216', user: 'narang', lxcId: 105 },
|
|
{ name: 'darang', ip: '10.10.10.136', user: 'darang', lxcId: 106 },
|
|
{ name: 'erang', ip: '10.10.10.163', user: 'erang', lxcId: 107 },
|
|
];
|
|
|
|
for (const sister of sisters) {
|
|
await prisma.sisterConfig.upsert({
|
|
where: { name: sister.name },
|
|
update: { ip: sister.ip, user: sister.user, lxcId: sister.lxcId },
|
|
create: sister,
|
|
});
|
|
console.log(` ✅ ${sister.name} (${sister.ip})`);
|
|
}
|
|
|
|
console.log('✅ Seed complete');
|
|
}
|
|
|
|
main()
|
|
.catch((e) => {
|
|
console.error(e);
|
|
process.exit(1);
|
|
})
|
|
.finally(async () => {
|
|
await prisma.$disconnect();
|
|
});
|