added genre getting
This commit is contained in:
parent
051b8d92c6
commit
cefd6770de
|
@ -16,7 +16,7 @@ const __dirname = path.dirname(__filename);
|
||||||
// })
|
// })
|
||||||
export default pino(
|
export default pino(
|
||||||
{
|
{
|
||||||
level: 'trace',
|
level: 'fatal',
|
||||||
formatters: {
|
formatters: {
|
||||||
level: (label) => {
|
level: (label) => {
|
||||||
return { level: label.toUpperCase() };
|
return { level: label.toUpperCase() };
|
||||||
|
|
|
@ -8,12 +8,14 @@ export class Data {
|
||||||
this.stories = await this.getStories()
|
this.stories = await this.getStories()
|
||||||
this.stories.map(row=>{
|
this.stories.map(row=>{
|
||||||
row.submissions=this.getSubmissionsByStoryId(row.id)
|
row.submissions=this.getSubmissionsByStoryId(row.id)
|
||||||
|
|
||||||
})
|
})
|
||||||
this.publications = await this.getPublications()
|
this.publications = await this.getPublications()
|
||||||
this.publications.map(row=>{
|
this.publications.map(row=>{
|
||||||
row.submissions=this.getSubmissionsByPublicationId(row.id)
|
row.submissions=this.getSubmissionsByPublicationId(row.id)
|
||||||
})
|
})
|
||||||
this.responses = await this.getResponses()
|
this.responses = await this.getResponses()
|
||||||
|
this.genres = await this.getGenres()
|
||||||
return this
|
return this
|
||||||
}
|
}
|
||||||
async getStories() {
|
async getStories() {
|
||||||
|
@ -44,7 +46,15 @@ export class Data {
|
||||||
return this.#db('responses')
|
return this.#db('responses')
|
||||||
.select('*')
|
.select('*')
|
||||||
}
|
}
|
||||||
|
async getGenres(){
|
||||||
|
const res = await this.#db('genres')
|
||||||
|
.select('*')
|
||||||
|
const array = []
|
||||||
|
for (const row of res) {
|
||||||
|
array[row.id]=row.name
|
||||||
|
}
|
||||||
|
return array
|
||||||
|
}
|
||||||
getSubmissionsByStoryId(id){
|
getSubmissionsByStoryId(id){
|
||||||
return this.submissions.filter(row=>row.story_id==id)
|
return this.submissions.filter(row=>row.story_id==id)
|
||||||
}
|
}
|
||||||
|
@ -53,4 +63,28 @@ export class Data {
|
||||||
return this.submissions.filter(row=>row.pub_id==id)
|
return this.submissions.filter(row=>row.pub_id==id)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async getGenresByStoryId(id){
|
||||||
|
const res = await this.#db('stories_genres')
|
||||||
|
.select('genre_id')
|
||||||
|
.where('story_id',id)
|
||||||
|
return this.#makeGenreArray(res)
|
||||||
|
}
|
||||||
|
async getGenresByPublicationId(id){
|
||||||
|
const res = await this.#db('pubs_genres')
|
||||||
|
.select('genre_id')
|
||||||
|
.where('pub_id',id)
|
||||||
|
console.dir(res)
|
||||||
|
return this.#makeGenreArray(res)
|
||||||
|
}
|
||||||
|
|
||||||
|
#makeGenreArray(data){
|
||||||
|
const array = []
|
||||||
|
for (const row of data) {
|
||||||
|
array.push({
|
||||||
|
name:this.genres[row.genre_id],
|
||||||
|
id: row.genre_id
|
||||||
|
})
|
||||||
|
}
|
||||||
|
return array
|
||||||
|
}
|
||||||
}
|
}
|
|
@ -1,8 +1,10 @@
|
||||||
export default class Entity{
|
export default class Entity{
|
||||||
set _id(prop){
|
set _id(prop){
|
||||||
if(prop){
|
if(prop){
|
||||||
const propNumber = Number(prop)
|
const propNumber = Number.parseInt(prop)
|
||||||
if(!Number.isInteger(propNumber)){throw new TypeError("id must be an integer!")}
|
console.log("PropNumber: "+propNumber)
|
||||||
|
|
||||||
|
if(Number.isNaN(propNumber)){throw new TypeError("id must be an integer!")}
|
||||||
this.id = propNumber
|
this.id = propNumber
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,8 +3,8 @@ import logger from "../logger.mjs"
|
||||||
export default class Story extends Title{
|
export default class Story extends Title{
|
||||||
set _word_count(prop){
|
set _word_count(prop){
|
||||||
if(prop){
|
if(prop){
|
||||||
const propNumber = Number(prop)
|
const propNumber = Number.parseInt(prop)
|
||||||
if(!Number.isInteger(propNumber)){throw new TypeError("word_count must be integer!")}
|
if(Number.isNaN(propNumber)){throw new TypeError("word_count must be integer!")}
|
||||||
this.word_count=propNumber
|
this.word_count=propNumber
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,22 +4,22 @@ import dataValidation from "./dataValidation.mjs";
|
||||||
export default class Submission extends Entity{
|
export default class Submission extends Entity{
|
||||||
set _story_id(prop){
|
set _story_id(prop){
|
||||||
if(prop){
|
if(prop){
|
||||||
const propNumber = Number(prop)
|
const propNumber = Number.parseInt(prop)
|
||||||
if(!Number.isInteger(propNumber)){throw new TypeError("story_id must be an integer")}
|
if(Number.isNaN(propNumber)){throw new TypeError("story_id must be an integer")}
|
||||||
this.story_id=propNumber
|
this.story_id=propNumber
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
set _pub_id(prop){
|
set _pub_id(prop){
|
||||||
const propNumber = Number(prop)
|
const propNumber = Number.parseInt(prop)
|
||||||
if(prop){
|
if(prop){
|
||||||
if(!Number.isInteger(propNumber)){throw new TypeError("pub_id must be an integer")}
|
if(Number.isNaN(propNumber)){throw new TypeError("pub_id must be an integer")}
|
||||||
this.pub_id=propNumber
|
this.pub_id=propNumber
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
set _response_id(prop){
|
set _response_id(prop){
|
||||||
if(prop){
|
if(prop){
|
||||||
const propNumber = Number(prop)
|
const propNumber = Number.parseInt(prop)
|
||||||
if(!Number.isInteger(propNumber)){throw new TypeError("response_id must be an integer")}
|
if(Number.isNaN(propNumber)){throw new TypeError("response_id must be an integer")}
|
||||||
this.response_id=propNumber
|
this.response_id=propNumber
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
BIN
submissions
BIN
submissions
Binary file not shown.
|
@ -71,4 +71,17 @@ describe("Testing Data object...",function(){
|
||||||
expect(row).to.contain.key('id')
|
expect(row).to.contain.key('id')
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
it("getGenresByStoryId() should return an array",async function(){
|
||||||
|
const data = new Data(db)
|
||||||
|
await data.init()
|
||||||
|
const res = await data.getGenresByStoryId(1)
|
||||||
|
console.dir(res)
|
||||||
|
expect(res).to.be.a('array')
|
||||||
|
})
|
||||||
|
it("getGenresByPublicationId() should return an array",async function(){
|
||||||
|
const data = new Data(db)
|
||||||
|
await data.init()
|
||||||
|
const res = await data.getGenresByPublicationId(1)
|
||||||
|
expect(res).to.be.a('array')
|
||||||
|
})
|
||||||
})
|
})
|
|
@ -9,7 +9,6 @@ chai.use(chaiAsPromised)
|
||||||
describe("tetsing Entity object",async function(){
|
describe("tetsing Entity object",async function(){
|
||||||
it("should throw TypeError if passed an invalid data.id",async function(){
|
it("should throw TypeError if passed an invalid data.id",async function(){
|
||||||
expect(()=>{new Entity({id:"string"})}).to.throw(TypeError)
|
expect(()=>{new Entity({id:"string"})}).to.throw(TypeError)
|
||||||
expect(()=>{new Entity({id:1.1})}).to.throw(TypeError)
|
|
||||||
expect(()=>{new Entity({id:{}})}).to.throw(TypeError)
|
expect(()=>{new Entity({id:{}})}).to.throw(TypeError)
|
||||||
expect(()=>{new Entity({id:[]})}).to.throw(TypeError)
|
expect(()=>{new Entity({id:[]})}).to.throw(TypeError)
|
||||||
})
|
})
|
||||||
|
|
|
@ -7,7 +7,7 @@ import Story from "../objects/Story.mjs";
|
||||||
chai.use(chaiAsPromised)
|
chai.use(chaiAsPromised)
|
||||||
describe("testing Story object",function(){
|
describe("testing Story object",function(){
|
||||||
it("should throw TypeError if .word_count is not an integer",function(){
|
it("should throw TypeError if .word_count is not an integer",function(){
|
||||||
expect(()=>{new Story({word_count:1.1})}).to.throw(TypeError)
|
expect(()=>{new Story({word_count:"boo"})}).to.throw(TypeError)
|
||||||
})
|
})
|
||||||
it("should have .word_count if created with valid data, and .word_count should be an integer",function(){
|
it("should have .word_count if created with valid data, and .word_count should be an integer",function(){
|
||||||
const story = new Story({word_count:100})
|
const story = new Story({word_count:100})
|
||||||
|
|
|
@ -14,7 +14,7 @@ const data = new Data(db)
|
||||||
await data.init()
|
await data.init()
|
||||||
app.use(bodyParser.json())
|
app.use(bodyParser.json())
|
||||||
app.use('/api',getEndpoints(data))
|
app.use('/api',getEndpoints(data))
|
||||||
app.use('/api', postEndpoints(db))
|
app.use('/api', postEndpoints(db,data))
|
||||||
|
|
||||||
|
|
||||||
describe("testing endpoints...",async function(){
|
describe("testing endpoints...",async function(){
|
||||||
|
@ -46,7 +46,8 @@ describe("testing /create endpoints", async function(){
|
||||||
describe("/story/create",async function(){
|
describe("/story/create",async function(){
|
||||||
const goodData = {
|
const goodData = {
|
||||||
title:"#test",
|
title:"#test",
|
||||||
word_count:111
|
word_count:111,
|
||||||
|
deleted:0
|
||||||
}
|
}
|
||||||
const badData = {
|
const badData = {
|
||||||
title:1,
|
title:1,
|
||||||
|
@ -83,7 +84,8 @@ describe("testing /create endpoints", async function(){
|
||||||
describe("/publication/create",async function(){
|
describe("/publication/create",async function(){
|
||||||
const goodData = {
|
const goodData = {
|
||||||
title:"#test",
|
title:"#test",
|
||||||
link:"www.internet.com"
|
link:"www.internet.com",
|
||||||
|
deleted:0
|
||||||
}
|
}
|
||||||
const badData = {
|
const badData = {
|
||||||
title:1,
|
title:1,
|
||||||
|
@ -166,7 +168,8 @@ describe("testing /edit endpoints",async function(){
|
||||||
const goodData = {
|
const goodData = {
|
||||||
id:1,
|
id:1,
|
||||||
title:"#test",
|
title:"#test",
|
||||||
word_count:111
|
word_count:111,
|
||||||
|
deleted:0
|
||||||
}
|
}
|
||||||
const badData = {
|
const badData = {
|
||||||
id:"string"
|
id:"string"
|
||||||
|
@ -210,7 +213,9 @@ describe("testing /edit endpoints",async function(){
|
||||||
const goodData = {
|
const goodData = {
|
||||||
id:1,
|
id:1,
|
||||||
title:"#test",
|
title:"#test",
|
||||||
link:"link"
|
link:"link",
|
||||||
|
query_after_days:90,
|
||||||
|
deleted:0
|
||||||
}
|
}
|
||||||
const badData = {
|
const badData = {
|
||||||
id:"string"
|
id:"string"
|
||||||
|
@ -302,81 +307,5 @@ describe("testing /edit endpoints",async function(){
|
||||||
|
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
describe("testing /delete endpoints",async function(){
|
|
||||||
describe("/story/delete",async function(){
|
|
||||||
it("item should be deleted from db",async function(){
|
|
||||||
let id = await db('stories').
|
|
||||||
insert({
|
|
||||||
title:"#test",
|
|
||||||
word_count:500
|
|
||||||
})
|
|
||||||
.returning('id')
|
|
||||||
id=id[0].id
|
|
||||||
|
|
||||||
await chai.request(app)
|
|
||||||
.post('/api/story/delete')
|
|
||||||
.send({id})
|
|
||||||
|
|
||||||
const res = await db('stories')
|
|
||||||
.select('*')
|
|
||||||
.where('id',id)
|
|
||||||
expect(res).to.have.lengthOf(0)
|
|
||||||
})
|
|
||||||
|
|
||||||
await db('stories')
|
|
||||||
.where('title','#test')
|
|
||||||
.del()
|
|
||||||
})
|
|
||||||
describe("/publication/delete",async function(){
|
|
||||||
it("item should be deleted from db",async function(){
|
|
||||||
let id = await db('pubs').
|
|
||||||
insert({
|
|
||||||
title:"#test",
|
|
||||||
link:'link'
|
|
||||||
})
|
|
||||||
.returning('id')
|
|
||||||
id=id[0].id
|
|
||||||
|
|
||||||
await chai.request(app)
|
|
||||||
.post('/api/publication/delete')
|
|
||||||
.send({id})
|
|
||||||
|
|
||||||
const res = await db('pubs')
|
|
||||||
.select('*')
|
|
||||||
.where('id',id)
|
|
||||||
expect(res).to.have.lengthOf(0)
|
|
||||||
})
|
|
||||||
|
|
||||||
await db('pubs')
|
|
||||||
.where('title','#test')
|
|
||||||
.del()
|
|
||||||
})
|
|
||||||
describe("/submission/delete",async function(){
|
|
||||||
it("item should be deleted from db",async function(){
|
|
||||||
let id = await db('subs').
|
|
||||||
insert({
|
|
||||||
story_id:1,
|
|
||||||
pub_id:1,
|
|
||||||
response_id:1,
|
|
||||||
date_submitted:"1066-01-01",
|
|
||||||
date_responded:"1066-01-01"
|
|
||||||
})
|
|
||||||
.returning('id')
|
|
||||||
id=id[0].id
|
|
||||||
|
|
||||||
await chai.request(app)
|
|
||||||
.post('/api/submission/delete')
|
|
||||||
.send({id})
|
|
||||||
|
|
||||||
const res = await db('subs')
|
|
||||||
.select('*')
|
|
||||||
.where('id',id)
|
|
||||||
expect(res).to.have.lengthOf(0)
|
|
||||||
})
|
|
||||||
|
|
||||||
await db('subs')
|
|
||||||
.where('date_submitted','1066-01-01')
|
|
||||||
.del()
|
|
||||||
})
|
|
||||||
})
|
|
||||||
})
|
})
|
Loading…
Reference in New Issue