@@ -276,95 +276,20 @@ export class HonoServerPlugin implements Plugin {
276276 }
277277 } ) ;
278278
279- // View Storage Routes
280- this . server . post ( '/api/v1/ui/views' , async ( req , res ) => {
281- ctx . logger . debug ( 'Create view request' , { name : req . body ?. name , object : req . body ?. object } ) ;
282- try {
283- const result = await p . createView ( req . body ) ;
284- if ( result . success ) {
285- ctx . logger . info ( 'View created' , { id : result . data ?. id , name : result . data ?. name } ) ;
286- res . status ( 201 ) . json ( result ) ;
287- } else {
288- ctx . logger . warn ( 'View creation failed' , { error : result . error } ) ;
289- res . status ( 400 ) . json ( result ) ;
290- }
291- } catch ( e : any ) {
292- ctx . logger . error ( 'View creation error' , e ) ;
293- res . status ( 500 ) . json ( { success : false , error : { code : 'internal_error' , message : e . message } } ) ;
294- }
295- } ) ;
296-
297- this . server . get ( '/api/v1/ui/views/:id' , async ( req , res ) => {
298- ctx . logger . debug ( 'Get view request' , { id : req . params . id } ) ;
299- try {
300- const result = await p . getView ( { id : req . params . id } ) ;
301- if ( result . success ) {
302- ctx . logger . debug ( 'View retrieved' , { id : req . params . id } ) ;
303- res . json ( result ) ;
304- } else {
305- ctx . logger . warn ( 'View not found' , { id : req . params . id } ) ;
306- res . status ( 404 ) . json ( result ) ;
307- }
308- } catch ( e : any ) {
309- ctx . logger . error ( 'Get view error' , e , { id : req . params . id } ) ;
310- res . status ( 500 ) . json ( { success : false , error : { code : 'internal_error' , message : e . message } } ) ;
311- }
312- } ) ;
313-
314- this . server . get ( '/api/v1/ui/views' , async ( req , res ) => {
315- ctx . logger . debug ( 'List views request' , { query : req . query } ) ;
279+ // UI Protocol endpoint
280+ this . server . get ( '/api/v1/ui/view/:object' , async ( req , res ) => {
281+ ctx . logger . debug ( 'Get UI view request' , { object : req . params . object , type : req . query . type } ) ;
316282 try {
317- const request : any = { } ;
318- if ( req . query . object ) request . object = req . query . object as string ;
319- if ( req . query . type ) request . type = req . query . type ;
320- if ( req . query . visibility ) request . visibility = req . query . visibility ;
321- if ( req . query . createdBy ) request . createdBy = req . query . createdBy as string ;
322- if ( req . query . isDefault !== undefined ) request . isDefault = req . query . isDefault === 'true' ;
323- if ( req . query . limit ) request . limit = parseInt ( req . query . limit as string ) ;
324- if ( req . query . offset ) request . offset = parseInt ( req . query . offset as string ) ;
325-
326- const result = await p . listViews ( request ) ;
327- ctx . logger . debug ( 'Views listed' , { count : result . data ?. length , total : result . pagination ?. total } ) ;
328- res . json ( result ) ;
283+ const viewType = ( req . query . type as 'list' | 'form' ) || 'list' ;
284+ const view = await p . getUiView ( { object : req . params . object , type : viewType } ) ;
285+ res . json ( view ) ;
329286 } catch ( e : any ) {
330- ctx . logger . error ( 'List views error ', e ) ;
331- res . status ( 500 ) . json ( { success : false , error : { code : 'internal_error' , message : e . message } } ) ;
287+ ctx . logger . warn ( 'UI view not found ', { object : req . params . object , error : e . message } ) ;
288+ res . status ( 404 ) . json ( { error : e . message } ) ;
332289 }
333290 } ) ;
334291
335- this . server . patch ( '/api/v1/ui/views/:id' , async ( req , res ) => {
336- ctx . logger . debug ( 'Update view request' , { id : req . params . id } ) ;
337- try {
338- const result = await p . updateView ( { ...req . body , id : req . params . id } ) ;
339- if ( result . success ) {
340- ctx . logger . info ( 'View updated' , { id : req . params . id } ) ;
341- res . json ( result ) ;
342- } else {
343- ctx . logger . warn ( 'View update failed' , { id : req . params . id , error : result . error } ) ;
344- res . status ( result . error ?. code === 'resource_not_found' ? 404 : 400 ) . json ( result ) ;
345- }
346- } catch ( e : any ) {
347- ctx . logger . error ( 'Update view error' , e , { id : req . params . id } ) ;
348- res . status ( 500 ) . json ( { success : false , error : { code : 'internal_error' , message : e . message } } ) ;
349- }
350- } ) ;
351292
352- this . server . delete ( '/api/v1/ui/views/:id' , async ( req , res ) => {
353- ctx . logger . debug ( 'Delete view request' , { id : req . params . id } ) ;
354- try {
355- const result = await p . deleteView ( { id : req . params . id } ) ;
356- if ( result . success ) {
357- ctx . logger . info ( 'View deleted' , { id : req . params . id } ) ;
358- res . json ( result ) ;
359- } else {
360- ctx . logger . warn ( 'View deletion failed' , { id : req . params . id } ) ;
361- res . status ( 404 ) . json ( result ) ;
362- }
363- } catch ( e : any ) {
364- ctx . logger . error ( 'Delete view error' , e , { id : req . params . id } ) ;
365- res . status ( 500 ) . json ( { success : false , error : { code : 'internal_error' , message : e . message } } ) ;
366- }
367- } ) ;
368293
369294 ctx . logger . info ( 'All API routes registered' ) ;
370295 }
0 commit comments