{"version":3,"sources":["../../../../src/controllers/A-ListingController/A-ListingController.component.ts"],"names":[],"mappings":";;;;;;;;;;AAWO,MAAM,4BAA4B,WAAA,CAAY;AAAA,EAWjD,MAAM,IAAA,CACmB,OAAA,EACC,QAAA,EACH,OACC,MAAA,EACtB;AAEE,IAAA,MAAM,IAAA,GAAO,KAAA,CAAM,kBAAA,CAAmB,OAAA,CAAQ,OAAO,IAAI,CAAA;AAEzD,IAAA,IAAI,CAAC,IAAA;AACD,MAAA,MAAM,IAAI,iBAAA,CAAkB;AAAA,QACxB,MAAA,EAAQ,GAAA;AAAA,QACR,WAAA,EAAa,CAAA,aAAA,EAAgB,OAAA,CAAQ,MAAA,CAAO,IAAI,CAAA,gBAAA;AAAA,OACnD,CAAA;AAEL,IAAA,MAAM,UAAA,GAAa,IAAI,kBAAA,CAAmB;AAAA,MACtC,MAAA,EAAQ;AAAA,KACX,CAAA;AAED,IAAA,KAAA,CAAM,SAAS,UAAU,CAAA;AAEzB,IAAA,MAAM,WAAA,GAAc,IAAI,uBAAA,CAAwB,OAAA,CAAQ,KAAA,EAAO;AAAA,MAC3D,cAAc,MAAA,CAAO,MAAA,CAAO,GAAA,CAAI,uBAAuB,KAAK,IAAI,CAAA;AAAA,MAChE,MAAM,MAAA,CAAO,MAAA,CAAO,GAAA,CAAI,aAAa,KAAK,GAAG;AAAA,KAChD,CAAA;AAED,IAAA,MAAM,UAAA,GAAa,IAAI,OAAA,CAAQ;AAAA,MAC3B,SAAA,EAAW,CAAC,WAAW;AAAA,KAC1B,CAAA,CAAE,OAAA,CAAQ,KAAK,CAAA;AAEhB,IAAA,MAAM,UAAA,CAAW,KAAK,UAAU,CAAA;AAEhC,IAAA,QAAA,CAAS,GAAA,CAAI,OAAA,EAAS,UAAA,CAAW,KAAK,CAAA;AACtC,IAAA,QAAA,CAAS,GAAA,CAAI,YAAA,EAAc,UAAA,CAAW,UAAU,CAAA;AAAA,EACpD;AACJ;AAnCU,eAAA,CAAA;AAAA,EALL,eAAe,GAAA,CAAI;AAAA,IAChB,IAAA,EAAM,QAAA;AAAA,IACN,OAAA,EAAS,IAAA;AAAA,IACT,MAAA,EAAQ;AAAA,GACX,CAAA;AAAA,EAEI,4BAAS,SAAS,CAAA,CAAA;AAAA,EAClB,4BAAS,UAAU,CAAA,CAAA;AAAA,EACnB,4BAAS,OAAO,CAAA,CAAA;AAAA,EAChB,4BAAS,QAAQ,CAAA;AAAA,CAAA,EAfb,mBAAA,CAWH,SAAA,EAAA,MAAA,EAAA,CAAA,CAAA","file":"A-ListingController.component.mjs","sourcesContent":["import { A_Component, A_Feature, A_Inject, A_Scope } from \"@adaas/a-concept\"\nimport { A_Config } from \"@adaas/a-utils/a-config\";\nimport { A_Request } from \"@adaas/a-server/request/A-Request.entity\";\nimport { A_Response } from \"@adaas/a-server/response/A-Response.entity\";\nimport { A_ServerRouter } from \"@adaas/a-server/router/A-ServerRouter.component\";\nimport { A_ServerEntityList } from \"@adaas/a-server/entity-list/A-EntityList.entity\";\nimport { A_ServerListQueryFilter } from \"@adaas/a-server/list-query/A-ServerListQueryFilter.context\";\nimport { A_HttpServerError } from \"../../lib/A-Server/A-HttpServer.error\";\n\n\n\nexport class A_ListingController extends A_Component {\n\n    // @A_Feature.Define({\n    //     name: 'listEntities',\n    //     invoke: false\n    // })\n    @A_ServerRouter.Get({\n        path: '/:type',\n        version: 'v1',\n        prefix: 'a-list'\n    })\n    async list(\n        @A_Inject(A_Request) request: A_Request<any, any, { type: string }>,\n        @A_Inject(A_Response) response: A_Response,\n        @A_Inject(A_Scope) scope: A_Scope,\n        @A_Inject(A_Config) config: A_Config<['A_LIST_ITEMS_PER_PAGE', 'A_LIST_PAGE']>\n    ) {\n\n        const ctor = scope.resolveConstructor(request.params.type);\n\n        if (!ctor)\n            throw new A_HttpServerError({\n                status: 404,\n                description: `Entity type \"${request.params.type}\" not registered`,\n            });\n\n        const entityList = new A_ServerEntityList({\n            entity: ctor,\n        });\n\n        scope.register(entityList);\n\n        const queryFilter = new A_ServerListQueryFilter(request.query, {\n            itemsPerPage: String(config.get('A_LIST_ITEMS_PER_PAGE') || '10'),\n            page: String(config.get('A_LIST_PAGE') || '1'),\n        });\n\n        const queryScope = new A_Scope({\n            fragments: [queryFilter],\n        }).inherit(scope);\n\n        await entityList.load(queryScope);\n\n        response.add('items', entityList.items);\n        response.add('pagination', entityList.pagination);\n    }\n}"]}