delete from buffer added

This commit is contained in:
Andrzej Stepien 2023-08-13 15:00:24 +02:00
parent 8c9254598d
commit 1109019ae0
10 changed files with 192 additions and 45 deletions

View File

@ -3,21 +3,25 @@ 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 {deleteFromBuffer, 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()
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 {
await deleteFromBuffer(prompt.word)
await insertPublished(note, prompt.word)
logger.trace("insertPublished successful!")
} catch (error) {
logger.error(error, 'insertPublished failed!')
}
@ -28,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")

View File

@ -55,7 +55,6 @@ export default async function insertPublished(res, word) {
date: isoDate(sampleRes.createdNote.createdAt)
})
} catch (error) {
logger.trace("succesful insertion into table: published")
throw error
}

View File

@ -1,44 +1,29 @@
import { apiKey } from './API.mjs'
import firefish from './firefish.mjs'
import logger from '../logger.mjs'
//JUST FOR USE IN LOCAL ENVIRONMENT
import { Agent, setGlobalDispatcher } from 'undici'
const agent = new Agent({
connect: {
rejectUnauthorized: false
}
})
setGlobalDispatcher(agent)
//^^^JUST FOR USE IN LOCAL ENVIRONMENT^^^
// //JUST FOR USE IN LOCAL ENVIRONMENT
// import { Agent, setGlobalDispatcher } from 'undici'
// const agent = new Agent({
// connect: {
// rejectUnauthorized: false
// }
// })
// setGlobalDispatcher(agent)
// //^^^JUST FOR USE IN LOCAL ENVIRONMENT^^^
export default async function createNote(text) {
const childLogger = logger.child({text})
childLogger.trace("createNote called")
const url = 'http://localhost:3000/api/notes/create'
const params = {
logger.trace("createNote called")
const body = {
text: text,
}
const headers = {
"Authorization": "Bearer " + apiKey,
"Content-type": "application/json; charset=UTF-8"
try {
const response = await firefish.post("notes/create",body)
logger.info(response)
return response.data
} catch (error) {
throw error
}
return await fetch(url, {
method: "POST",
headers: headers,
body: JSON.stringify(params),
})
.then(res => {
return res.json()
})
.then(data => {
childLogger.trace(data, "note created successfully")
return data
})
.catch(error =>{
throw error
})
}

View File

@ -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() {

View File

@ -13,8 +13,10 @@ app.use(
})
)
app.post('/api', (req,res) => {
receiveMention(req.body)
logger.info("webhook received:",req.body.body.note.text)
//receiveMention(req.body)
logger.info({body:req.body.body},"webhook received!")
//logger.info(req.body.body)
//logger.info("webhook received:",req.body.body.note.text)
res.sendStatus(200)
})

149
package-lock.json generated
View File

@ -9,7 +9,9 @@
"version": "1.0.0",
"license": "GPL-3.0-or-later",
"dependencies": {
"axios": "^1.4.0",
"body-parser": "^1.20.2",
"chai": "^4.3.7",
"express": "^4.18.2",
"node-cron": "^3.0.2",
"pino": "^8.15.0",
@ -228,6 +230,19 @@
"resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
"integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg=="
},
"node_modules/assertion-error": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz",
"integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==",
"engines": {
"node": "*"
}
},
"node_modules/asynckit": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
"integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
},
"node_modules/atomic-sleep": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/atomic-sleep/-/atomic-sleep-1.0.0.tgz",
@ -236,6 +251,16 @@
"node": ">=8.0.0"
}
},
"node_modules/axios": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/axios/-/axios-1.4.0.tgz",
"integrity": "sha512-S4XCWMEmzvo64T9GfvQDOXgYRDJ/wsSZc7Jvdgx5u1sd0JwsuPLqb3SYmusag+edF6ziyMensPVqLTSc1PiSEA==",
"dependencies": {
"follow-redirects": "^1.15.0",
"form-data": "^4.0.0",
"proxy-from-env": "^1.1.0"
}
},
"node_modules/balanced-match": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
@ -386,6 +411,31 @@
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/chai": {
"version": "4.3.7",
"resolved": "https://registry.npmjs.org/chai/-/chai-4.3.7.tgz",
"integrity": "sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A==",
"dependencies": {
"assertion-error": "^1.1.0",
"check-error": "^1.0.2",
"deep-eql": "^4.1.2",
"get-func-name": "^2.0.0",
"loupe": "^2.3.1",
"pathval": "^1.1.1",
"type-detect": "^4.0.5"
},
"engines": {
"node": ">=4"
}
},
"node_modules/check-error": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz",
"integrity": "sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==",
"engines": {
"node": "*"
}
},
"node_modules/chownr": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz",
@ -416,6 +466,17 @@
"resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz",
"integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ=="
},
"node_modules/combined-stream": {
"version": "1.0.8",
"resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
"integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
"dependencies": {
"delayed-stream": "~1.0.0"
},
"engines": {
"node": ">= 0.8"
}
},
"node_modules/commander": {
"version": "10.0.1",
"resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz",
@ -483,6 +544,25 @@
"ms": "2.0.0"
}
},
"node_modules/deep-eql": {
"version": "4.1.3",
"resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.3.tgz",
"integrity": "sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==",
"dependencies": {
"type-detect": "^4.0.0"
},
"engines": {
"node": ">=6"
}
},
"node_modules/delayed-stream": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
"integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
"engines": {
"node": ">=0.4.0"
}
},
"node_modules/delegates": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz",
@ -734,6 +814,38 @@
"node": ">= 0.8"
}
},
"node_modules/follow-redirects": {
"version": "1.15.2",
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz",
"integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==",
"funding": [
{
"type": "individual",
"url": "https://github.com/sponsors/RubenVerborgh"
}
],
"engines": {
"node": ">=4.0"
},
"peerDependenciesMeta": {
"debug": {
"optional": true
}
}
},
"node_modules/form-data": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz",
"integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
"dependencies": {
"asynckit": "^0.4.0",
"combined-stream": "^1.0.8",
"mime-types": "^2.1.12"
},
"engines": {
"node": ">= 6"
}
},
"node_modules/forwarded": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
@ -798,6 +910,14 @@
"node": "6.* || 8.* || >= 10.*"
}
},
"node_modules/get-func-name": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz",
"integrity": "sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==",
"engines": {
"node": "*"
}
},
"node_modules/get-intrinsic": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz",
@ -1248,6 +1368,14 @@
"integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
"dev": true
},
"node_modules/loupe": {
"version": "2.3.6",
"resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.6.tgz",
"integrity": "sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==",
"dependencies": {
"get-func-name": "^2.0.0"
}
},
"node_modules/lru-cache": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
@ -1709,6 +1837,14 @@
"resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
"integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ=="
},
"node_modules/pathval": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz",
"integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==",
"engines": {
"node": "*"
}
},
"node_modules/pg-connection-string": {
"version": "2.6.1",
"resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.6.1.tgz",
@ -1867,6 +2003,11 @@
"node": ">= 0.10"
}
},
"node_modules/proxy-from-env": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
"integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg=="
},
"node_modules/pump": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
@ -2387,6 +2528,14 @@
"resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
"integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="
},
"node_modules/type-detect": {
"version": "4.0.8",
"resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz",
"integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==",
"engines": {
"node": ">=4"
}
},
"node_modules/type-is": {
"version": "1.6.18",
"resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",

View File

@ -14,7 +14,9 @@
"sqlite3": "^5.1.6"
},
"dependencies": {
"axios": "^1.4.0",
"body-parser": "^1.20.2",
"chai": "^4.3.7",
"express": "^4.18.2",
"node-cron": "^3.0.2",
"pino": "^8.15.0",

View File

@ -1,6 +1,6 @@
import logger from "../logger.mjs"
import getAcceptablePrompts from "../database-calls/getAcceptablePrompts.mjs"
import { checkSpelling } from "spellchecker"
import { wordIsAlreadyInBuffer, getAcceptablePrompts } from "../database-calls/db.mjs"
export default async function (note) {
const childLogger = logger.child({note})
@ -13,9 +13,9 @@ export default async function (note) {
const word = textArray[0]
if(checkSpelling(word)){
if(await getAcceptablePrompts().indexOf(word)!=-1){
if(/*wordIsAlreadyInBuffer*/true){
// if(!wordIsAlreadyInBuffer(word)){
}
// }
}
}

View File

@ -0,0 +1,5 @@
export default async () => {
}

View File

@ -4,6 +4,7 @@ import checkAndPublish from './checkAndPublish.mjs';
export default function start(){
logger.trace("start() called")
checkAndPublish()
cron.schedule('* * * * *', () => {
checkAndPublish()
logger.trace('one-minute cron call');