You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

63 lines
1.4 KiB
JavaScript

const pg = require('../pg')
const joinjs = require('join-js').default;
const debug = require('debug')('sos:db:category')
const mappings = require('../mappings')
const category = module.exports = {}
category.findAll = async () => {
const query = 'select * from sos.v_category'
debug(query);
const {rows} = await pg.query(query)
return joinjs.map(rows, mappings, 'categoryMap', 'category_');
}
category.create = async (name, urlslug, description) => {
const query = {
text: 'select * from sos.create_category($1::text, $2::citext, $3::text)',
values: [
name,
urlslug,
description
]
}
debug(query)
const {rows} = await pg.query(query);
return joinjs.map(rows, mappings, 'categoryMap', 'category_')[0];
}
category.addItem = async (category_uuid, item_uuid) => {
const query = {
text: 'select * from sos.add_item_to_category($1::uuid, $2::uuid)',
values: [
category_uuid,
item_uuid
]
}
debug(query)
const {rows} = await pg.query(query);
return joinjs.map(rows, mappings, 'categoryMap', 'category_')[0];
}
category.removeItem = async (category_uuid, item_uuid) => {
const query = {
text: 'select * from sos.remove_item_from_category($1::uuid, $2::uuid)',
values: [
category_uuid,
item_uuid
]
}
debug(query)
const {rows} = await pg.query(query);
return joinjs.map(rows, mappings, 'categoryMap', 'category_')[0];
}