@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.
57 lines (50 loc) • 1.36 kB
JavaScript
import createService from 'feathers-objection'
import Initiative from '../models/initiatives'
import wrapFeatureCollection from '../hooks/geoJson'
import { setCreatedAt, setUpdatedAt } from '../hooks/audit'
import { relate, relateOwner, selectEntryColumns, withEager } from '../hooks/relations'
import { sendNewEntryNotification } from '../hooks/email'
export default app => {
const service = createService({
model: Initiative,
allowedEager: '[goals, ownerships]',
eagerFilters: [
{
expression: 'ownerships',
filter: builder => {
builder.select(['users.id', 'email', 'name'])
}
}
]
})
app.use('/initiatives', service)
app.service('initiatives').hooks({
before: {
all: [],
find: [selectEntryColumns],
get: [withEager('[goals]')],
create: [setCreatedAt],
update: [setUpdatedAt],
patch: [setUpdatedAt],
remove: []
},
after: {
all: [],
find: [wrapFeatureCollection],
get: [],
create: [relate(Initiative, 'goals'), relateOwner, sendNewEntryNotification],
update: [relate(Initiative, 'goals')],
patch: [relate(Initiative, 'goals')],
remove: []
},
error: {
all: [],
find: [],
get: [],
create: [],
update: [],
patch: [],
remove: []
}
})
}