{"version":3,"sources":["../../../../src/controllers/A-CommandController/A-CommandController.component.ts"],"names":[],"mappings":";;;;;;;;AASO,MAAM,4BAA4B,WAAA,CAAY;AAAA,EAOjD,MAAM,aAAA,CACmB,GAAA,EACC,GAAA,EACH,KAAA,EACI,WACH,MAAA,EACP;AAEb,IAAA,MAAM,WAAA,GAAc,IAAI,MAAA,CAAO,OAAA;AAE/B,IAAA,MAAM,kBAAA,GAAqB,KAAA,CAAM,kBAAA,CAA8B,WAAW,CAAA;AAE1E,IAAA,IAAI,CAAC,kBAAA,EAAoB;AACrB,MAAA,GAAA,CAAI,OAAO,GAAG,CAAA;AAEd,MAAA,MAAM,IAAI,aAAA,CAAc;AAAA,QACpB,KAAA,EAAO,mBAAA;AAAA,QACP,WAAA,EAAa,2BAA2B,WAAW,CAAA,UAAA,CAAA;AAAA,QACnD,MAAA,EAAQ;AAAA,OACX,CAAA;AAAA,IACL;AAEA,IAAA,MAAM,OAAA,GAAU,IAAI,kBAAA,CAAmB,GAAA,CAAI,IAAI,CAAA;AAE/C,IAAA,KAAA,CAAM,SAAS,OAAO,CAAA;AAEtB,IAAA,MAAM,QAAQ,OAAA,EAAQ;AAEtB,IAAA,MAAM,UAAA,GAAa,QAAQ,MAAA,EAAO;AAElC,IAAA,OAAO,GAAA,CAAI,MAAA,CAAO,GAAG,CAAA,CAAE,KAAK,UAAU,CAAA;AAAA,EAC1C;AACJ;AAhCU,eAAA,CAAA;AAAA,EALL,eAAe,IAAA,CAAK;AAAA,IACjB,IAAA,EAAM,WAAA;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,WAAW,CAAA,CAAA;AAAA,EACpB,4BAAS,QAAQ,CAAA;AAAA,CAAA,EAZb,mBAAA,CAOH,SAAA,EAAA,eAAA,EAAA,CAAA,CAAA","file":"A-CommandController.component.mjs","sourcesContent":["import { A_Component, A_Container, A_Inject, A_Scope } from \"@adaas/a-concept\";\nimport { A_ServerRouter } from \"@adaas/a-server/router/A-ServerRouter.component\";\nimport { A_Request } from \"@adaas/a-server/request/A-Request.entity\";\nimport { A_Response } from \"@adaas/a-server/response/A-Response.entity\";\nimport { A_ServerError } from \"../../lib/A-Server/A-Server.error\";\nimport { A_Logger } from \"@adaas/a-utils/a-logger\";\nimport { A_Command } from \"@adaas/a-utils/a-command\";\n\n\nexport class A_CommandController extends A_Component {\n\n    @A_ServerRouter.Post({\n        path: \"/:command\",\n        version: \"v1\",\n        prefix: \"a-command\"\n    })\n    async handleCommand(\n        @A_Inject(A_Request) req: A_Request<any, any, { command: string }>,\n        @A_Inject(A_Response) res: A_Response,\n        @A_Inject(A_Scope) scope: A_Scope,\n        @A_Inject(A_Container) container: A_Container,\n        @A_Inject(A_Logger) logger: A_Logger,\n    ): Promise<void> {\n\n        const commandName = req.params.command;\n\n        const CommandConstructor = scope.resolveConstructor<A_Command>(commandName);\n\n        if (!CommandConstructor) {\n            res.status(404);\n\n            throw new A_ServerError({\n                title: 'Command Not Found',\n                description: `Command constructor for ${commandName} not found`,\n                status: 404,\n            });\n        }\n\n        const command = new CommandConstructor(req.body);\n\n        scope.register(command);\n\n        await command.execute();\n\n        const serialized = command.toJSON();\n\n        return res.status(200).send(serialized);\n    }\n}"]}