77 lines
1.8 KiB
JavaScript
77 lines
1.8 KiB
JavaScript
/**
|
|
* Gemini 모델 테이블
|
|
* 사용 가능한 AI 모델 목록 저장
|
|
*/
|
|
const { DataTypes } = require("sequelize");
|
|
const sequelize = require("../config/database");
|
|
|
|
const GeminiModel = sequelize.define(
|
|
"GeminiModel",
|
|
{
|
|
id: {
|
|
type: DataTypes.INTEGER,
|
|
primaryKey: true,
|
|
autoIncrement: true,
|
|
},
|
|
modelId: {
|
|
type: DataTypes.STRING(100),
|
|
allowNull: false,
|
|
unique: true,
|
|
field: "model_id",
|
|
comment: "모델 ID (예: gemini-2.5-flash)",
|
|
},
|
|
name: {
|
|
type: DataTypes.STRING(100),
|
|
allowNull: false,
|
|
comment: "모델 표시명",
|
|
},
|
|
description: {
|
|
type: DataTypes.TEXT,
|
|
allowNull: true,
|
|
comment: "모델 설명",
|
|
},
|
|
sortOrder: {
|
|
type: DataTypes.INTEGER,
|
|
allowNull: false,
|
|
defaultValue: 0,
|
|
field: "sort_order",
|
|
comment: "정렬 순서",
|
|
},
|
|
isActive: {
|
|
type: DataTypes.BOOLEAN,
|
|
allowNull: false,
|
|
defaultValue: true,
|
|
field: "is_active",
|
|
comment: "활성화 여부",
|
|
},
|
|
},
|
|
{
|
|
tableName: "gemini_models",
|
|
timestamps: true,
|
|
createdAt: "created_at",
|
|
updatedAt: "updated_at",
|
|
}
|
|
);
|
|
|
|
// 기본 모델 데이터 시드
|
|
GeminiModel.seedDefaultModels = async () => {
|
|
const defaults = [
|
|
{ modelId: "gemini-3-pro-preview", name: "Gemini 3 Pro", sortOrder: 1 },
|
|
{ modelId: "gemini-2.5-pro", name: "Gemini 2.5 Pro", sortOrder: 2 },
|
|
{ modelId: "gemini-2.5-flash", name: "Gemini 2.5 Flash", sortOrder: 3 },
|
|
{
|
|
modelId: "gemini-2.5-flash-lite",
|
|
name: "Gemini 2.5 Flash-Lite",
|
|
sortOrder: 4,
|
|
},
|
|
];
|
|
|
|
for (const model of defaults) {
|
|
await GeminiModel.findOrCreate({
|
|
where: { modelId: model.modelId },
|
|
defaults: model,
|
|
});
|
|
}
|
|
};
|
|
|
|
module.exports = GeminiModel;
|