2023-08-06 18:36:24 +00:00
|
|
|
import Knex from 'knex'
|
2023-08-12 10:05:24 +00:00
|
|
|
import logger from '../logger.mjs'
|
2023-08-12 10:41:36 +00:00
|
|
|
import { isoDate } from "../utilities.mjs"
|
2023-08-06 18:36:24 +00:00
|
|
|
|
|
|
|
export const db = Knex({
|
2023-08-12 10:41:36 +00:00
|
|
|
client: 'sqlite3', // or 'better-sqlite3'
|
|
|
|
connection: {
|
|
|
|
filename: "data/database"
|
|
|
|
},
|
|
|
|
useNullAsDefault: true
|
|
|
|
})
|
2023-08-06 18:36:24 +00:00
|
|
|
|
2023-08-12 10:41:36 +00:00
|
|
|
export const getWords = async () => {
|
2023-08-12 13:01:06 +00:00
|
|
|
logger.trace("getWords called")
|
2023-08-12 10:41:36 +00:00
|
|
|
return db
|
2023-08-06 18:36:24 +00:00
|
|
|
.select("word")
|
|
|
|
.from("dictionary")
|
2023-08-12 14:55:25 +00:00
|
|
|
.catch(error => { throw error })
|
2023-08-06 18:36:24 +00:00
|
|
|
}
|
|
|
|
|
2023-08-12 14:55:25 +00:00
|
|
|
export const valueExistsInTable = async (table, column, value) => {
|
|
|
|
try {
|
|
|
|
const number = await db(table)
|
|
|
|
.count('* as count')
|
|
|
|
.where(column, value)
|
|
|
|
return number[0].count > 0
|
|
|
|
} catch (error) {
|
|
|
|
logger.error("valueExistsInTable failed!")
|
|
|
|
throw error
|
|
|
|
}
|
|
|
|
|
2023-08-12 10:41:36 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
export const todaysPromptAlreadyPublished = async () => {
|
2023-08-12 14:55:25 +00:00
|
|
|
return valueExistsInTable('published', 'date', isoDate())
|
2023-08-12 10:41:36 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
export const wordIsAlreadyInBuffer = async (word) => {
|
2023-08-12 14:55:25 +00:00
|
|
|
return valueExistsInTable('buffer', 'word', word)
|
2023-08-12 10:41:36 +00:00
|
|
|
}
|