UNPKG

1.31 kBJavaScriptView Raw
1// Copyright 2019 Zaiste & contributors. All rights reserved.
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6// http://www.apache.org/licenses/LICENSE-2.0
7//
8// Unless required by applicable law or agreed to in writing, software
9// distributed under the License is distributed on an "AS IS" BASIS,
10// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11// See the License for the specific language governing permissions and
12// limitations under the License.
13
14const fg = require('fast-glob');
15
16const build = () => {
17 const handlers = fg.sync(['features/**/controller/*.js']);
18
19 return handlers.map(path => {
20 const pattern = /([\.\w]+)\/controller\/(\w+)/;
21 const [_, resource, operation] = pattern.exec(path);
22
23 return { resource, operation, path };
24 });
25};
26
27const translate = (name, resource) =>
28 ({
29 browse: { method: 'get', route: `/${resource}` },
30 fetch: { method: 'get', route: `/${resource}/:id` },
31 create: { method: 'post', route: `/${resource}` },
32 update: { method: 'put', route: `/${resource}/:id` },
33 destroy: { method: 'delete', route: `/${resource}/:id` }
34 }[name]);
35
36module.exports = {
37 build,
38 translate
39};