16 lines
833 B
TypeScript
16 lines
833 B
TypeScript
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)};
|
|
});
|