"use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
    return new (P || (P = Promise))(function (resolve, reject) {
        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
        function rejected(value) { try { step(generator.throw(value)); } catch (e) { reject(e); } }
        function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
        step((generator = generator.apply(thisArg, _arguments)).next());
    });
};
// @babel ignore
// 映射 map 表
const _ = require('lodash');
const services = new Map();
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = services;
exports.routerDecorator = (url, method) => (target, key, descriptor) => {
    services.set(url, {
        value: descriptor.value,
        method: method
    });
    return descriptor;
};
exports.initService = (router) => {
    for (let key of services.keys()) {
        const target = services.get(key);
        router[target.method](key, (req, res) => __awaiter(this, void 0, void 0, function* () {
            let params = {};
            if (target.method === 'get') {
                params = req.query;
            }
            else {
                params = _.assign(req.body || {}, req.query || {});
            }
            const result = yield target.value(params, req);
            res.json(result);
        }));
    }
};
