56 lines
1.5 KiB
JavaScript
56 lines
1.5 KiB
JavaScript
|
|
// 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,
|
||
|
|
};
|