UNPKG

@teikei/api

Version:

Teikei API server. Teikei is the software that powers ernte-teilen.org, a website that maps out Community-supported Agriculture in Germany.

79 lines (73 loc) 1.79 kB
import createService from 'feathers-objection' import Farm from '../models/farms' import wrapFeatureCollection from '../hooks/geoJson' import { relateOwner, withEager, selectEntryColumns, relate, entryColumns } from '../hooks/relations' import { setCreatedAt, setUpdatedAt } from '../hooks/audit' import { sendNewEntryNotification } from '../hooks/email' export default app => { const service = createService({ model: Farm, allowedEager: '[depots, products, ownerships]', eagerFilters: [ { expression: 'depots', filter: builder => { builder.select(entryColumns('depots')) } }, { expression: 'products', filter: builder => { builder.select(['products.id', 'category', 'name']) } }, { expression: 'ownerships', filter: builder => { builder.select(['users.id', 'email', 'name']) } } ] }) app.use('/farms', service) app.service('farms').hooks({ before: { all: [], find: [withEager('[products]'), selectEntryColumns], get: [withEager('[depots, products]')], create: [setCreatedAt], update: [setUpdatedAt], patch: [setUpdatedAt], remove: [] }, after: { all: [], find: [wrapFeatureCollection], get: [], create: [ relate(Farm, 'products'), relate(Farm, 'depots'), relateOwner, sendNewEntryNotification ], update: [relate(Farm, 'products'), relate(Farm, 'depots')], patch: [relate(Farm, 'products'), relate(Farm, 'depots')], remove: [] }, error: { all: [], find: [], get: [], create: [], update: [], patch: [], remove: [] } }) }