getting the buffer working
This commit is contained in:
parent
19c321c459
commit
0e04a8ed04
|
@ -3,22 +3,23 @@ import createNote from "./firefish-calls/createNote.mjs"
|
|||
import makeText from "./makeText.mjs"
|
||||
import insertPublished from "./database-calls/insertPublished.mjs"
|
||||
import logger from "./logger.mjs"
|
||||
import {todaysPromptAlreadyPublished} from "./database-calls/db.mjs"
|
||||
import {todaysPromptAlreadyPublished, tableIsNotEmpty, getPromptFromBuffer} from "./database-calls/db.mjs"
|
||||
|
||||
|
||||
export default async function checkAndPublish () {
|
||||
logger.trace("checkAndPublish called")
|
||||
logger.trace(todaysPromptAlreadyPublished())
|
||||
if(!await todaysPromptAlreadyPublished()){
|
||||
try {
|
||||
const prompt = await getNewPrompt()
|
||||
logger.trace("getNewPrompt successful!")
|
||||
try {
|
||||
const prompt = await tableIsNotEmpty('buffer') ? await getPromptFromBuffer() : await getNewPrompt()
|
||||
logger.trace("prompt acquired successfully!")
|
||||
try {
|
||||
const text = makeText(prompt)
|
||||
try {
|
||||
const note = await createNote(text)
|
||||
logger.trace("createNote successful!")
|
||||
try {
|
||||
//DELETE FROM BUFFER
|
||||
await insertPublished(note, prompt.word)
|
||||
logger.trace("insertPublished successful!")
|
||||
} catch (error) {
|
||||
|
@ -31,7 +32,7 @@ export default async function checkAndPublish () {
|
|||
logger.error(error, 'makeText failed!')
|
||||
}
|
||||
} catch (error) {
|
||||
logger.error(error,'getNewPrompt failed!')
|
||||
logger.error(error,'failed to get prompt!')
|
||||
}
|
||||
} else {
|
||||
logger.trace("today's prompt has already been published")
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
import Knex from 'knex'
|
||||
import logger from '../logger.mjs'
|
||||
import { isoDate } from "../utilities.mjs"
|
||||
import config from "../config.mjs"
|
||||
|
||||
export const db = Knex({
|
||||
client: 'sqlite3', // or 'better-sqlite3'
|
||||
|
@ -9,6 +10,36 @@ export const db = Knex({
|
|||
},
|
||||
useNullAsDefault: true
|
||||
})
|
||||
const blocklist = db.union([
|
||||
db('bad_words').select('word'),
|
||||
db('medical_dictionary').select('word'),
|
||||
db('published').select('word')
|
||||
])
|
||||
|
||||
export const getAcceptablePrompts = async (word) => {
|
||||
logger.trace("getAcceptablePrompt called")
|
||||
try {
|
||||
return db('dictionary')
|
||||
.select('*')
|
||||
.where({
|
||||
derivative: 0,
|
||||
scientific: 0,
|
||||
})
|
||||
.modify(queryBuilder=>{
|
||||
if(word){queryBuilder.andWhere('word',word)}
|
||||
})
|
||||
.andWhere('count', '<', config.maxCount)
|
||||
.andWhere('count', '>', config.minCount)
|
||||
.andWhere('word', 'not in', blocklist)
|
||||
.whereRaw('length(word) > 3')
|
||||
.whereNotNull('pronunciation')
|
||||
.orderByRaw('count desc')
|
||||
} catch (error) {
|
||||
logger.error("getAcceptablePrompts failed!")
|
||||
throw error
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
export const getWords = async () => {
|
||||
logger.trace("getWords called")
|
||||
|
@ -18,24 +49,52 @@ export const getWords = async () => {
|
|||
.catch(error => { throw error })
|
||||
}
|
||||
|
||||
export const valueExistsInTable = async (table, column, value) => {
|
||||
|
||||
|
||||
|
||||
|
||||
export const valueExistsInColumn = async (table, column, value) => {
|
||||
try {
|
||||
const number = await db(table)
|
||||
.count('* as count')
|
||||
.where(column, value)
|
||||
return number[0].count > 0
|
||||
return number[0].count > 0
|
||||
} catch (error) {
|
||||
logger.error("valueExistsInTable failed!")
|
||||
logger.error("valueExistsInColumn failed!")
|
||||
throw error
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
export const todaysPromptAlreadyPublished = async () => {
|
||||
return valueExistsInTable('published', 'date', isoDate())
|
||||
return valueExistsInColumn('published', 'date', isoDate())
|
||||
}
|
||||
|
||||
export const wordIsAlreadyInBuffer = async (word) => {
|
||||
return valueExistsInTable('buffer', 'word', word)
|
||||
}
|
||||
return valueExistsInColumn('buffer', 'word', word)
|
||||
}
|
||||
|
||||
export const tableIsNotEmpty = async (table) => {
|
||||
try {
|
||||
const number = await db(table)
|
||||
.count('* as count')
|
||||
return number[0].count > 0
|
||||
} catch (error) {
|
||||
throw error
|
||||
}
|
||||
}
|
||||
|
||||
export const getPromptFromBuffer = async () => {
|
||||
logger.trace("getting prompt from buffer")
|
||||
const oldestWordInBuffer = await db('buffer').select('word').orderBy('timestamp', 'asc').limit(1)
|
||||
logger.info(`oldest word in buffer: ${oldestWordInBuffer[0].word}`)
|
||||
try {
|
||||
const prompt = await getAcceptablePrompts(oldestWordInBuffer[0].word)
|
||||
return prompt[0]
|
||||
} catch (error) {
|
||||
logger.error("getPromptFromBuffer failed!")
|
||||
throw error
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
import logger from "./logger.mjs"
|
||||
import getAcceptablePrompts from "./database-calls/getAcceptablePrompts.mjs"
|
||||
import { getAcceptablePrompts } from "./database-calls/db.mjs"
|
||||
import config from "./config.mjs"
|
||||
|
||||
export default async function getNewPrompt() {
|
||||
|
|
Loading…
Reference in New Issue