import { readFileSync,writeFileSync,renameSync } from 'node:fs'; import { join } from 'node:path'; import { cachedLoras } from '~/shared/studio2/lora-cache.mjs'; import { listStudioLoras } from '../../utils/loras'; import { studio2Root } from '../../utils/studio2/store'; import { studio2LoraCatalog } from '../../utils/studio2/lora-catalog'; export default defineEventHandler(async event => { const {owner}=assertLibraryOwner(event),path=join(studio2Root(),`loras-${owner}.cache`); const listed=await cachedLoras({ read:()=>{try{return JSON.parse(readFileSync(path,'utf8'));}catch{return null;}}, write:value=>{writeFileSync(path+'.tmp',JSON.stringify(value));renameSync(path+'.tmp',path);}, live:()=>listStudioLoras({fresh:true}),fresh:getQuery(event).fresh==='1' }); return {...listed,...studio2LoraCatalog(owner)}; });