( data: Omit<ModelConfig, 'id' | 'createdAt' | 'order' | 'parentFolderId'>, afterItemId?: string, inFolderId?: string )
| 159 | // ==================== Model 配置 ==================== |
| 160 | |
| 161 | export function createModelConfig( |
| 162 | data: Omit<ModelConfig, 'id' | 'createdAt' | 'order' | 'parentFolderId'>, |
| 163 | afterItemId?: string, |
| 164 | inFolderId?: string |
| 165 | ): ModelConfig { |
| 166 | const { settings } = stores |
| 167 | let parentFolderId: string | undefined |
| 168 | let order: number |
| 169 | |
| 170 | if (inFolderId) { |
| 171 | parentFolderId = inFolderId |
| 172 | const itemsInFolder = [ |
| 173 | ...settings.settings.modelConfigs.items.filter((i) => i.parentFolderId === inFolderId), |
| 174 | ...settings.settings.modelConfigs.folders.filter((f) => f.parentFolderId === inFolderId) |
| 175 | ] |
| 176 | order = itemsInFolder.length > 0 ? Math.max(...itemsInFolder.map((i) => i.order ?? 0)) + 1 : 0 |
| 177 | } else { |
| 178 | const position = prepareInsertPosition(settings.settings.modelConfigs, afterItemId) |
| 179 | parentFolderId = position.parentFolderId |
| 180 | order = position.order |
| 181 | } |
| 182 | |
| 183 | const config: ModelConfig = { |
| 184 | ...data, |
| 185 | id: uuidv4(), |
| 186 | parentFolderId, |
| 187 | order, |
| 188 | createdAt: Date.now() |
| 189 | } |
| 190 | |
| 191 | settings.addModelConfig(config) |
| 192 | return config |
| 193 | } |
| 194 | |
| 195 | export function updateModelConfig(id: string, updates: Partial<ModelConfig>): void { |
| 196 | stores.settings.updateModelConfig(id, updates) |
no test coverage detected