// src/models/index.js // Sequelize 모델 인덱스 const { Sequelize } = require('sequelize'); const config = require('../config/database.config'); const env = process.env.NODE_ENV || 'development'; const dbConfig = config[env]; // Sequelize 인스턴스 생성 const sequelize = new Sequelize( dbConfig.database, dbConfig.username, dbConfig.password, { host: dbConfig.host, port: dbConfig.port, dialect: dbConfig.dialect, logging: dbConfig.logging, pool: dbConfig.pool, dialectOptions: dbConfig.dialectOptions, } ); // 모델 임포트 const User = require('./user.model')(sequelize); const ApiKey = require('./api-key.model')(sequelize); const UsageLog = require('./usage-log.model')(sequelize); const LLMProvider = require('./llm-provider.model')(sequelize); // 관계 설정 // User - ApiKey (1:N) User.hasMany(ApiKey, { foreignKey: 'userId', as: 'apiKeys' }); ApiKey.belongsTo(User, { foreignKey: 'userId', as: 'user' }); // User - UsageLog (1:N) User.hasMany(UsageLog, { foreignKey: 'userId', as: 'usageLogs' }); UsageLog.belongsTo(User, { foreignKey: 'userId', as: 'user' }); // ApiKey - UsageLog (1:N) ApiKey.hasMany(UsageLog, { foreignKey: 'apiKeyId', as: 'usageLogs' }); UsageLog.belongsTo(ApiKey, { foreignKey: 'apiKeyId', as: 'apiKey' }); // LLMProvider - UsageLog (1:N) LLMProvider.hasMany(UsageLog, { foreignKey: 'providerId', as: 'usageLogs' }); UsageLog.belongsTo(LLMProvider, { foreignKey: 'providerId', as: 'provider' }); module.exports = { sequelize, Sequelize, User, ApiKey, UsageLog, LLMProvider, };