sub-manager-backend/objects/Data.mjs

56 lines
1.6 KiB
JavaScript
Raw Normal View History

2023-09-06 16:26:15 +00:00
export class Data {
#db
constructor(db) {
this.#db = db
}
async init() {
this.submissions = await this.getSubmissions()
2023-09-06 16:26:15 +00:00
this.stories = await this.getStories()
this.stories.map(row=>{
row.submissions=this.getSubmissionsByStoryId(row.id)
})
2023-09-06 16:26:15 +00:00
this.publications = await this.getPublications()
this.publications.map(row=>{
row.submissions=this.getSubmissionsByPublicationId(row.id)
})
2023-09-11 22:00:09 +00:00
this.responses = await this.getResponses()
return this
2023-09-06 16:26:15 +00:00
}
async getStories() {
return this.#db('stories')
2023-09-07 09:39:09 +00:00
.select('id','title','word_count')
2023-09-06 16:26:15 +00:00
}
async getPublications() {
return this.#db('pubs')
.select('*')
}
async getSubmissions() {
return this.#db('subs')
.join('stories', 'subs.story_id', 'stories.id')
.join('pubs', 'subs.pub_id', 'pubs.id')
.join('responses', 'subs.response_id', 'responses.id')
.select('subs.id',
'subs.story_id',
'stories.title as story',
'subs.pub_id',
'pubs.title as publication',
'subs.date_submitted',
'subs.date_responded',
'subs.response_id',
'responses.response'
)
}
2023-09-11 22:00:09 +00:00
async getResponses() {
return this.#db('responses')
.select('*')
}
2023-09-06 16:26:15 +00:00
getSubmissionsByStoryId(id){
return this.submissions.filter(row=>row.story_id==id)
}
getSubmissionsByPublicationId(id){
return this.submissions.filter(row=>row.pub_id==id)
}
2023-09-06 16:26:15 +00:00
}