(jsonData: string, merge = false)
| 1204 | if (merge) { |
| 1205 | Object.assign(lowdb.data.rules, newRules); |
| 1206 | } else { |
| 1207 | lowdb.data.rules = newRules; |
| 1208 | } |
| 1209 | await lowdb.write(); |
| 1210 | ruleCache.clear(); |
| 1211 | } else { |
| 1212 | // SQLite 模式下逐条导入 |
| 1213 | for (const [sourceId, rule] of Object.entries( |
| 1214 | newRules as { [key: string]: ShiftRule } |
| 1215 | )) { |
| 1216 | if (!merge) { |
| 1217 | // 如果不是合并模式,先删除现有规则 |
| 1218 | deleteShiftRule(Number(sourceId)); |
| 1219 | } |
| 1220 | saveShiftRule(Number(sourceId), rule); |
| 1221 | } |
| 1222 | } |
| 1223 | } |
| 1224 | // Message listener handler for the plugin system |
| 1225 | async function shiftMessageListener( |
| 1226 | message: any, |
| 1227 | options?: { isEdited?: boolean } |
| 1228 | ): Promise<void> { |
| 1229 | await handleIncomingMessage(message, options?.isEdited); |
| 1230 | } |
| 1231 | class ShiftPlugin extends Plugin { |
| 1232 | cleanup(): void { |
| 1233 | cleanupGroupBuffers(); |
| 1234 | BackupManager.cleanup(); |
| 1235 | ruleCache.clear(); |
| 1236 | if (sqliteDb) { |
| 1237 | sqliteDb.close(); |
| 1238 | sqliteDb = null; |
| 1239 | } |
no test coverage detected