@@ -268,7 +268,10 @@ export class GenericController {
268268 fieldType . constructor . name . includes ( "DECIMAL" )
269269 ) {
270270 value = Number ( value ) ; // Convert to number
271- } else if ( fieldType . constructor . name . includes ( "TEXT" ) ) {
271+ } else if (
272+ fieldType . constructor . name . includes ( "TEXT" ) ||
273+ fieldType . constructor . name . includes ( "ENUM" )
274+ ) {
272275 value = { [ Op . like ] : `%${ filters [ key ] } %` } ; // Ensure LIKE is used correctly
273276 } else {
274277 value = filters [ key ] ; // Default case
@@ -346,6 +349,13 @@ export class GenericController {
346349
347350 console . log ( "Found records:" , records . length ) ;
348351
352+ if ( modelName == "papers" ) {
353+ console . log ( "AAAAAAAA" ) ;
354+ return Promise . all (
355+ records . map ( ( r ) => this . getFullPaperById ( r . getDataValue ( "id" ) ) ) ,
356+ ) ;
357+ }
358+
349359 return records . map ( ( r ) => r . get ( { plain : true } ) ) ;
350360 }
351361
@@ -445,6 +455,51 @@ export class GenericController {
445455 } ;
446456 }
447457
458+ /** Retrieve all papers with full related data */
459+ static async getFullPaper ( ) {
460+ console . log ( "Fetching all papers with full data format." ) ;
461+
462+ // Fetch all papers with authors, parts, and nested relationships
463+ const papers = await models . Paper . findAll ( {
464+ include : [
465+ { model : models . Author , as : "authors" } ,
466+ {
467+ model : models . Part ,
468+ as : "parts" ,
469+ include : [
470+ { model : models . Tid , as : "tids" } ,
471+ { model : models . See , as : "sees" } ,
472+ { model : models . Dd , as : "dds" } ,
473+ ] ,
474+ } ,
475+ ] ,
476+ } ) ;
477+
478+ // If no papers found, return an empty array
479+ if ( ! papers || papers . length === 0 ) {
480+ console . warn ( "No papers found." ) ;
481+ return [ ] ;
482+ }
483+
484+ // Convert all paper models to the structured format
485+ return papers . map ( ( paper ) => {
486+ const paperData = paper . get ( { plain : true } ) ;
487+
488+ return {
489+ ...paperData ,
490+ authors : Array . isArray ( paperData . authors ) ? paperData . authors : [ ] ,
491+ parts : Array . isArray ( paperData . parts )
492+ ? paperData . parts . map ( ( part : any ) => ( {
493+ ...part ,
494+ tids : Array . isArray ( part . tids ) ? part . tids : [ ] ,
495+ sees : Array . isArray ( part . sees ) ? part . sees : [ ] ,
496+ dds : Array . isArray ( part . dds ) ? part . dds : [ ] ,
497+ } ) )
498+ : [ ] ,
499+ } ;
500+ } ) ;
501+ }
502+
448503 /** Close the database connection */
449504 async closeDB ( ) : Promise < void > {
450505 await sequelize . close ( ) ;
0 commit comments