module.exports = Self => {
    Self.remoteMethodCtx('executeProc', {
        description: 'Return result of procedure',
        accessType: 'EXECUTE',
        accepts: [
            {
                arg: 'routine',
                type: 'string',
                description: 'The routine name',
                required: true,
                http: {source: 'path'}
            },
            {
                arg: 'schema',
                type: 'string',
                description: 'The routine schema',
                required: true,
            },
            {
                arg: 'params',
                type: ['any'],
                description: 'The params array',
            },
        ],
        returns: {
            type: 'any',
            root: true
        },
        http: {
            path: `/:routine/execute-proc`,
            verb: 'POST'
        }
    });

    Self.executeProc = async(ctx, routine, schema, params, options) => {
        const query = `CALL ${schema}.${routine}`;
        return Self.execute(ctx, 'PROCEDURE', query, params, options);
    };
};