UNPKG

@compas/code-gen

Version:

Generate various boring parts of your server

55 lines (50 loc) 1.63 kB
import { structureNamedTypes } from "./structure.js"; /** * Get a list of CRUD objects in the structure * * @param {import("../generate.js").GenerateContext} generateContext * @returns {Array<(import("../../types/advanced-types.d.ts").NamedType<import("../generated/common/types.d.ts").StructureCrudDefinition>)>} */ export function structureCrud(generateContext) { /** * @type {Array<(import("../../types/advanced-types.d.ts").NamedType<import("../generated/common/types.d.ts").StructureCrudDefinition>)>} */ const result = []; for (const namedType of structureNamedTypes(generateContext.structure)) { if (namedType.type === "crud") { result.push(namedType); } } return result; } /** * Call the route specific functions that are enabled on the CRUD object. * * @template {Array<any>} X * @param {import("../../types/advanced-types.d.ts").NamedType<import("../generated/common/types.d.ts").StructureCrudDefinition>} crud * @param {{ * listRoute: (...X) => void, * singleRoute: (...X) => void, * createRoute: (...X) => void, * updateRoute: (...X) => void, * deleteRoute: (...X) => void, * }} functions * @param {X} args */ export function crudRouteSwitch(crud, functions, args) { if (crud.routeOptions.listRoute) { functions.listRoute(...args); } if (crud.routeOptions.singleRoute) { functions.singleRoute(...args); } if (crud.routeOptions.createRoute) { functions.createRoute(...args); } if (crud.routeOptions.updateRoute) { functions.updateRoute(...args); } if (crud.routeOptions.deleteRoute) { functions.deleteRoute(...args); } }