150 lines
3.9 KiB
JavaScript
150 lines
3.9 KiB
JavaScript
var express = require('express');
|
|
var router = express.Router();
|
|
var sqlite3 = require('sqlite3');
|
|
|
|
const database_masto = "mastodon_multi_accounts.db"
|
|
/* GET home page. */
|
|
router.get('/', function (req, res, next) {
|
|
res.render('index', {title: 'Express'});
|
|
});
|
|
|
|
// publier un message avec un certain compte
|
|
router.get('/publish', function (req, res, next) {
|
|
res.render('index', {title: 'Express'});
|
|
});
|
|
|
|
|
|
const connect = require('@databases/sqlite');
|
|
const {sql} = require('@databases/sqlite');
|
|
|
|
const db = connect(database_masto);
|
|
|
|
|
|
function createDatabase() {
|
|
var newdb = new sqlite3.Database(database_masto, sqlite3.OPEN_READWRITE | sqlite3.OPEN_CREATE, (err) => {
|
|
|
|
createTables(newdb);
|
|
})
|
|
}
|
|
|
|
function createTables(newdb) {
|
|
async function prepare() {
|
|
await db.query(sql`
|
|
create table posts_scheduled
|
|
(
|
|
action_id integer
|
|
constraint posts_scheduled_pk
|
|
primary key autoincrement,
|
|
post_username varchar not null,
|
|
content varchar not null,
|
|
medias varchar,
|
|
datetime datetime
|
|
);
|
|
|
|
create unique index posts_scheduled_action_id_uindex
|
|
on posts_scheduled (action_id);
|
|
|
|
insert into posts_scheduled
|
|
values (NULL, "modominem", "un message d'example", NULL);
|
|
|
|
`);
|
|
console.log('requête de création faite')
|
|
}
|
|
|
|
const prepared = prepare();
|
|
}
|
|
|
|
function getAllPosts(db) {
|
|
return db.query(sql`SELECT *
|
|
FROM posts_scheduled;`)
|
|
}
|
|
|
|
router.get('/init-db', function (req, res, next) {
|
|
var db = new sqlite3.Database(database_masto, sqlite3.OPEN_READWRITE | sqlite3.OPEN_CREATE, (err) => {
|
|
console.log('got to create db')
|
|
createDatabase()
|
|
}
|
|
)
|
|
res.render('created_db', {});
|
|
});
|
|
|
|
router.get('/list', function (req, res, next) {
|
|
|
|
// let posts_list = [{
|
|
// action_id: 1,
|
|
// post_username: "modominem",
|
|
// content: "demo post list",
|
|
// medias: "media file name from assets folder",
|
|
// date_schedule: "2022-07-07 "
|
|
// }]
|
|
|
|
getAllPosts(db).then(
|
|
(results) => {
|
|
console.log( "liste de posts " ,results)
|
|
res.render('database', {posts_list: results});
|
|
},
|
|
(err) => console.error(err),
|
|
);
|
|
});
|
|
|
|
|
|
router.get('/add-example', function (req, res, next) {
|
|
// let db = connect(database_masto);
|
|
|
|
async function prepare() {
|
|
await db.query(sql`
|
|
insert into posts_scheduled
|
|
values (NULL, "modominem", "un message d'example", "image.jpg",NULL)
|
|
;
|
|
`).then(resp => {
|
|
console.log(resp)
|
|
|
|
let posts_list = []
|
|
res.redirect('/list')
|
|
},
|
|
err => {
|
|
console.log(err)
|
|
});
|
|
}
|
|
|
|
const prepared = prepare();
|
|
|
|
}
|
|
);
|
|
|
|
|
|
// publier le message en db dans la file
|
|
router.get('/publish-last-entry', function (req, res, next) {
|
|
res.render('index', {title: 'Express'});
|
|
getAllPosts(db).then(
|
|
(results) => {
|
|
console.log( "publier le premier message de la file d'attente" ,results[0])
|
|
res.render('publish', {posts_list: results[0]});
|
|
},
|
|
(err) => console.error(err),
|
|
);
|
|
|
|
});
|
|
|
|
// répartir les publications dans le temps
|
|
// TODO
|
|
const limit_posts_per_day=10
|
|
|
|
router.get('/dispatch-publication-in-time', function (req, res, next) {
|
|
res.render('index', {title: 'Express'});
|
|
getAllPosts(db).then(
|
|
(results) => {
|
|
console.log( "répartir" ,results[0])
|
|
|
|
// on compte les posts et quel intervalle de temps mettre entre chaque pour tenir le rythme de X posts par jour
|
|
|
|
res.render('index', {posts_list: results[0]});
|
|
},
|
|
(err) => console.error(err),
|
|
);
|
|
|
|
});
|
|
|
|
|
|
module.exports = router;
|