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) {
|
export default async function createNote(text) {
|
||||||
const childLogger = logger.child({text})
|
const childLogger = logger.child({text})
|
||||||
childLogger.trace("createNote called")
|
childLogger.trace("createNote called")
|
||||||
const url = 'http://localhost:3000/api/notes/create'
|
const url = 'https://localhost:80/api/notes/create'
|
||||||
const params = {
|
const params = {
|
||||||
text: text,
|
text: text,
|
||||||
}
|
}
|
||||||
|
@ -33,6 +33,7 @@ export default async function createNote(text) {
|
||||||
return res.json()
|
return res.json()
|
||||||
})
|
})
|
||||||
.then(data => {
|
.then(data => {
|
||||||
|
childLogger.trace(data, "note created successfully")
|
||||||
return data
|
return data
|
||||||
})
|
})
|
||||||
.catch(error =>{
|
.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)
|
date: isoDate(sampleRes.createdNote.createdAt)
|
||||||
})
|
})
|
||||||
.then(res => {
|
.then(res => {
|
||||||
|
childLogger.trace("succesful insertion into table: published")
|
||||||
return res
|
return res
|
||||||
})
|
})
|
||||||
.catch(error => {throw error})
|
.catch(error => {throw error})
|
||||||
|
|
|
@ -10,7 +10,7 @@ const __dirname = path.dirname(__filename);
|
||||||
// });
|
// });
|
||||||
|
|
||||||
export default pino({
|
export default pino({
|
||||||
level: process.env.PINO_LOG_LEVEL || 'info',
|
level: process.env.PINO_LOG_LEVEL || 'trace',
|
||||||
formatters: {
|
formatters: {
|
||||||
level: (label) => {
|
level: (label) => {
|
||||||
return { severity: label.toUpperCase() };
|
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 cron from 'node-cron'
|
||||||
import logger from './logger.mjs';
|
import logger from './logger.mjs';
|
||||||
|
import checkAndPublish from './checkAndPublish.mjs';
|
||||||
|
|
||||||
export default function start(){
|
export default function start(){
|
||||||
|
logger.trace("start() called")
|
||||||
cron.schedule('* * * * *', () => {
|
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 { isoDate } from "./utilities.mjs";
|
||||||
import logger from "./logger.mjs";
|
import logger from "./logger.mjs";
|
||||||
export default async function todaysPromptAlreadyPublished() {
|
export default async function todaysPromptAlreadyPublished() {
|
||||||
const childLogger = logger.child()
|
|
||||||
childLogger.trace("todaysPromptAlreadyPublished called")
|
|
||||||
const number = await db('published')
|
const number = await db('published')
|
||||||
.count('* as count')
|
.count('* as count')
|
||||||
.where('date', isoDate())
|
.where('date', isoDate())
|
||||||
|
|
Loading…
Reference in New Issue