57 lines
994 B
JavaScript
57 lines
994 B
JavaScript
import knex from './knex';
|
|
|
|
function curateDatabaseShelf(shelf) {
|
|
if (!shelf) {
|
|
return null;
|
|
}
|
|
|
|
return {
|
|
id: shelf.id,
|
|
slug: shelf.slug,
|
|
name: shelf.slug,
|
|
};
|
|
}
|
|
|
|
async function fetchShelf(shelfId) {
|
|
const shelfEntry = await knex('shelves')
|
|
.where((builder) => {
|
|
const id = Number(shelfId);
|
|
|
|
if (Number.isNaN(id)) {
|
|
builder.where('slug', shelfId);
|
|
return;
|
|
}
|
|
|
|
builder.where('id', shelfId);
|
|
})
|
|
.first();
|
|
|
|
return curateDatabaseShelf(shelfEntry);
|
|
}
|
|
|
|
async function fetchShelves({ limit = 10 } = {}) {
|
|
const shelfEntries = await knex('shelves').limit(limit);
|
|
|
|
return shelfEntries.map((shelfEntry) => curateDatabaseShelf(shelfEntry));
|
|
}
|
|
|
|
async function createShelf(shelf, user) {
|
|
const shelfEntry = await knex('shelves')
|
|
.insert({
|
|
slug: shelf.slug,
|
|
founder_id: user.id,
|
|
})
|
|
.returning('*');
|
|
|
|
console.log('entry', shelfEntry);
|
|
|
|
return curateDatabaseShelf(shelfEntry);
|
|
}
|
|
|
|
export {
|
|
fetchShelf,
|
|
fetchShelves,
|
|
createShelf,
|
|
curateDatabaseShelf,
|
|
};
|