File tree Expand file tree Collapse file tree 3 files changed +43
-0
lines changed
Expand file tree Collapse file tree 3 files changed +43
-0
lines changed Original file line number Diff line number Diff line change 77// Main Manager
88export { MetadataManager , type WatchCallback , type MetadataManagerOptions } from './metadata-manager.js' ;
99
10+ // Plugin
11+ export { MetadataPlugin } from './plugin.js' ;
12+
1013// Loaders
1114export { type MetadataLoader } from './loaders/loader-interface.js' ;
1215export { MemoryLoader } from './loaders/memory-loader.js' ;
Original file line number Diff line number Diff line change @@ -271,4 +271,15 @@ export class ObjectStackProtocolImplementation implements ObjectStackProtocol {
271271 } ) ;
272272 }
273273
274+ async saveMetaItem ( request : { type : string , name : string , item ?: any } ) {
275+ if ( ! request . item ) {
276+ throw new Error ( 'Item data is required' ) ;
277+ }
278+ // Default implementation saves to Memory Registry
279+ SchemaRegistry . registerItem ( request . type , request . item , 'name' ) ;
280+ return {
281+ success : true ,
282+ message : 'Saved to memory registry'
283+ } ;
284+ }
274285}
Original file line number Diff line number Diff line change @@ -333,6 +333,35 @@ export class RestServer {
333333 } ,
334334 } ) ;
335335 }
336+
337+ // PUT /meta/:type/:name - Save metadata item
338+ // We always register this route, but return 501 if protocol doesn't support it
339+ // This makes it discoverable even if not implemented
340+ this . routeManager . register ( {
341+ method : 'PUT' ,
342+ path : `${ metaPath } /:type/:name` ,
343+ handler : async ( req : any , res : any ) => {
344+ try {
345+ if ( ! this . protocol . saveMetaItem ) {
346+ res . status ( 501 ) . json ( { error : 'Save operation not supported by protocol implementation' } ) ;
347+ return ;
348+ }
349+
350+ const result = await this . protocol . saveMetaItem ( {
351+ type : req . params . type ,
352+ name : req . params . name ,
353+ item : req . body
354+ } ) ;
355+ res . json ( result ) ;
356+ } catch ( error : any ) {
357+ res . status ( 400 ) . json ( { error : error . message } ) ;
358+ }
359+ } ,
360+ metadata : {
361+ summary : 'Save specific metadata item' ,
362+ tags : [ 'metadata' ] ,
363+ } ,
364+ } ) ;
336365 }
337366
338367 /**
You can’t perform that action at this time.
0 commit comments