{"version":3,"sources":["../../../../src/controllers/A-EntityController/A-EntityController.component.ts"],"names":[],"mappings":"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","file":"A-EntityController.component.mjs","sourcesContent":["import { A_Component, A_Context, A_Feature, A_Inject, A_Scope, ASEID } from \"@adaas/a-concept\";\nimport { A_Request } from \"@adaas/a-server/request/A-Request.entity\";\nimport { A_ServerRouter } from \"@adaas/a-server/router/A-ServerRouter.component\";\nimport { A_Response } from \"@adaas/a-server/response/A-Response.entity\";\nimport { A_HttpServerError } from \"../../lib/A-Server/A-HttpServer.error\";\n\n\n\nexport class A_EntityController extends A_Component {\n\n    // =======================================================\n    // ================ Method Definition=====================\n    // =======================================================\n\n    @A_Feature.Define({\n        name: 'getEntity',\n        invoke: false\n    })\n    @A_ServerRouter.Get({\n        path: '/:aseid',\n        version: 'v1',\n        prefix: 'a-entity'\n    })\n    async load(\n        @A_Inject(A_Request) request: A_Request<any, any, { aseid: string }>,\n        @A_Inject(A_Response) response: A_Response,\n        @A_Inject(A_Scope) scope: A_Scope\n    ) {\n        if (!ASEID.isASEID(request.params.aseid))\n            throw new A_HttpServerError({\n                status: 400,\n                description: `Invalid ASEID: \"${request.params.aseid}\"`,\n            });\n\n        const aseid = new ASEID(request.params.aseid);\n\n        const constructor = scope.resolveConstructor(aseid.entity);\n\n        if (!constructor)\n            throw new A_HttpServerError({\n                status: 404,\n                description: `Entity constructor for ASEID ${request.params.aseid} not found`,\n            });\n\n        const entity = new constructor(request.params.aseid);\n\n        scope.register(entity);\n\n        await entity.load();\n\n        return response.status(200).send(entity.toJSON());\n    }\n\n\n\n    @A_ServerRouter.Post({\n        path: '/',\n        version: 'v1',\n        prefix: 'a-entity'\n    })\n    async create(\n        @A_Inject(A_Request) request: A_Request<any, any, { aseid: string }>,\n        @A_Inject(A_Response) response: A_Response,\n        @A_Inject(A_Scope) scope: A_Scope\n    ) {\n        const constructor = scope.resolveConstructor(request.params.aseid);\n\n        if (!constructor)\n            throw new A_HttpServerError({\n                status: 404,\n                description: `Entity type \"${request.params.aseid}\" not registered`,\n            });\n\n        const entity = new constructor(request.body);\n\n        scope.register(entity);\n\n        await entity.save();\n    }\n\n\n\n    @A_ServerRouter.Put({\n        path: '/:aseid',\n        version: 'v1',\n        prefix: 'a-entity'\n    })\n    async update(\n        @A_Inject(A_Request) request: A_Request<any, any, { aseid: string }>,\n        @A_Inject(A_Response) response: A_Response,\n        @A_Inject(A_Scope) scope: A_Scope\n    ) {\n        if (!ASEID.isASEID(request.params.aseid))\n            throw new A_HttpServerError({\n                status: 400,\n                description: `Invalid ASEID: \"${request.params.aseid}\"`,\n            });\n\n        const constructor = scope.resolveConstructor(request.params.aseid);\n\n        if (!constructor)\n            throw new A_HttpServerError({\n                status: 404,\n                description: `Entity constructor for ASEID ${request.params.aseid} not found`,\n            });\n\n        const entity = new constructor(request.body);\n\n        scope.register(entity);\n\n        await entity.save();\n    }\n\n\n    @A_ServerRouter.Delete({\n        path: '/:aseid',\n        version: 'v1',\n        prefix: 'a-entity'\n    })\n    async delete(\n        @A_Inject(A_Request) request: A_Request<any, any, { aseid: string }>,\n        @A_Inject(A_Response) response: A_Response,\n        @A_Inject(A_Scope) scope: A_Scope\n    ) {\n        if (!ASEID.isASEID(request.params.aseid))\n            throw new A_HttpServerError({\n                status: 400,\n                description: `Invalid ASEID: \"${request.params.aseid}\"`,\n            });\n\n        const constructor = scope.resolveConstructor(request.params.aseid);\n\n        if (!constructor)\n            throw new A_HttpServerError({\n                status: 404,\n                description: `Entity constructor for ASEID ${request.params.aseid} not found`,\n            });\n\n        const entity = new constructor(request.params.aseid);\n\n        scope.register(entity);\n\n        await entity.destroy();\n    }\n\n\n\n    // @A_Feature.Define({\n    //     name: 'callEntity',\n    //     invoke: false\n    // })\n    @A_ServerRouter.Post({\n        path: '/:aseid/:action',\n        version: 'v1',\n        prefix: 'a-entity'\n    })\n    async callEntity(\n        @A_Inject(A_Request) request: A_Request<any, any, { aseid: string, action: string }>,\n        @A_Inject(A_Response) response: A_Response,\n        @A_Inject(A_Scope) scope: A_Scope\n    ) {\n        if (!ASEID.isASEID(request.params.aseid))\n            throw new A_HttpServerError({\n                status: 400,\n                description: `Invalid ASEID: \"${request.params.aseid}\"`,\n            });\n\n        const constructor = scope.resolveConstructor(request.params.aseid);\n\n        if (!constructor)\n            throw new A_HttpServerError({\n                status: 404,\n                description: `Entity constructor for ASEID ${request.params.aseid} not found`,\n            });\n\n        const meta = A_Context.meta(constructor);\n\n        const targetFeature = meta.features().find(f => f.name === `${constructor.name}.${request.params.action}`);\n\n        if (!targetFeature)\n            throw new A_HttpServerError({\n                status: 404,\n                description: `Feature \"${request.params.action}\" not found on entity`,\n            });\n\n        const entity = new constructor(request.params.aseid);\n\n        scope.register(entity);\n\n        await entity.load(scope);\n\n        await entity[targetFeature.handler](scope);\n\n        response.add('result', scope.toJSON());\n        response.add('entity', entity);\n        response.add('type', entity.aseid.entity);\n    }\n}"]}