checkAndPublish workflow
This commit is contained in:
parent
5dc2a3fa0c
commit
56266b4872
|
@ -0,0 +1,44 @@
|
|||
import getNewPrompt from "./getNewPrompt.mjs"
|
||||
import createNote from "./createNote.mjs"
|
||||
import makeText from "./makeText.mjs"
|
||||
import insertPublished from "./insertPublished.mjs"
|
||||
import logger from "./logger.mjs"
|
||||
import todaysPromptAlreadyPublished from "./todaysPromptAlreadyPublished.mjs"
|
||||
const maxCount = 30000000
|
||||
const minCount = 200000
|
||||
const spamMode = false
|
||||
|
||||
export default async function checkAndPublish () {
|
||||
logger.trace("checkAndPublish called")
|
||||
logger.trace(todaysPromptAlreadyPublished())
|
||||
if(!await todaysPromptAlreadyPublished()){
|
||||
try {
|
||||
const prompt = await getNewPrompt({ minCount, maxCount, rarityBias: 0.7 })
|
||||
try {
|
||||
const text = makeText(prompt)
|
||||
try {
|
||||
const note = await createNote(text)
|
||||
try {
|
||||
await insertPublished(note, prompt.word)
|
||||
} catch (error) {
|
||||
logger.error(error, 'insertPublished failed!')
|
||||
}
|
||||
} catch (error) {
|
||||
logger.error(error, 'createNote failed!')
|
||||
}
|
||||
} catch (error) {
|
||||
logger.error(error, 'makeText failed!')
|
||||
}
|
||||
} catch (error) {
|
||||
logger.error(error,'getNewPrompt failed!')
|
||||
}
|
||||
} else {
|
||||
logger.trace("today's prompt has already been published")
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
@ -14,7 +14,7 @@ setGlobalDispatcher(agent)
|
|||
export default async function createNote(text) {
|
||||
const childLogger = logger.child({text})
|
||||
childLogger.trace("createNote called")
|
||||
const url = 'http://localhost:3000/api/notes/create'
|
||||
const url = 'https://localhost:80/api/notes/create'
|
||||
const params = {
|
||||
text: text,
|
||||
}
|
||||
|
@ -33,6 +33,7 @@ export default async function createNote(text) {
|
|||
return res.json()
|
||||
})
|
||||
.then(data => {
|
||||
childLogger.trace(data, "note created successfully")
|
||||
return data
|
||||
})
|
||||
.catch(error =>{
|
||||
|
|
|
@ -1,38 +0,0 @@
|
|||
import getNewPrompt from "./getNewPrompt.mjs"
|
||||
import createNote from "./createNote.mjs"
|
||||
import makeText from "./makeText.mjs"
|
||||
import insertPublished from "./insertPublished.mjs"
|
||||
import logger from "./logger.mjs"
|
||||
const maxCount = 30000000
|
||||
const minCount = 200000
|
||||
|
||||
export default async function daily () {
|
||||
|
||||
try {
|
||||
const prompt = await getNewPrompt({ minCount, maxCount, rarityBias: 0.7 })
|
||||
try {
|
||||
const text = makeText(prompt)
|
||||
try {
|
||||
const note = await createNote(text)
|
||||
try {
|
||||
await insertPublished(note, prompt.word)
|
||||
} catch (error) {
|
||||
logger.error(error, 'insertPublished failed!')
|
||||
}
|
||||
} catch (error) {
|
||||
logger.error(error, 'createNote failed!')
|
||||
}
|
||||
} catch (error) {
|
||||
logger.error(error, 'makeText failed!')
|
||||
}
|
||||
} catch (error) {
|
||||
logger.error(error,'getNewPrompt failed!')
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
Binary file not shown.
|
@ -55,6 +55,7 @@ export default async function insertPublished(res, word){
|
|||
date: isoDate(sampleRes.createdNote.createdAt)
|
||||
})
|
||||
.then(res => {
|
||||
childLogger.trace("succesful insertion into table: published")
|
||||
return res
|
||||
})
|
||||
.catch(error => {throw error})
|
||||
|
|
|
@ -10,7 +10,7 @@ const __dirname = path.dirname(__filename);
|
|||
// });
|
||||
|
||||
export default pino({
|
||||
level: process.env.PINO_LOG_LEVEL || 'info',
|
||||
level: process.env.PINO_LOG_LEVEL || 'trace',
|
||||
formatters: {
|
||||
level: (label) => {
|
||||
return { severity: label.toUpperCase() };
|
||||
|
|
19
src/spam.mjs
19
src/spam.mjs
|
@ -1,19 +0,0 @@
|
|||
import daily from "./daily.mjs"
|
||||
import logger from "./logger.mjs"
|
||||
const maxCount = 30000000
|
||||
const minCount = 200000
|
||||
|
||||
|
||||
const spam = async ()=>{
|
||||
await daily()
|
||||
}
|
||||
|
||||
|
||||
|
||||
const delay = ms => new Promise(res=>{setTimeout(res,ms)})
|
||||
|
||||
do{
|
||||
await delay(1000)
|
||||
await spam()
|
||||
logger.trace("Spam!")
|
||||
}while(true)
|
|
@ -1,8 +1,11 @@
|
|||
import cron from 'node-cron'
|
||||
import logger from './logger.mjs';
|
||||
import checkAndPublish from './checkAndPublish.mjs';
|
||||
|
||||
export default function start(){
|
||||
logger.trace("start() called")
|
||||
cron.schedule('* * * * *', () => {
|
||||
logger.trace('running a task every minute');
|
||||
checkAndPublish()
|
||||
logger.trace('one-minute cron call');
|
||||
});
|
||||
}
|
|
@ -2,8 +2,6 @@ import { db } from "./db.mjs";
|
|||
import { isoDate } from "./utilities.mjs";
|
||||
import logger from "./logger.mjs";
|
||||
export default async function todaysPromptAlreadyPublished() {
|
||||
const childLogger = logger.child()
|
||||
childLogger.trace("todaysPromptAlreadyPublished called")
|
||||
const number = await db('published')
|
||||
.count('* as count')
|
||||
.where('date', isoDate())
|
||||
|
|
Loading…
Reference in New Issue