41 lines
1.3 KiB
TypeScript
41 lines
1.3 KiB
TypeScript
|
import * as twitch from "../twitch";
|
||
|
import { log, LogLevel } from "../logging"
|
||
|
import db from "../db";
|
||
|
|
||
|
export async function processBans(streamer: twitch.StreamerUserIdTokenPair) {
|
||
|
var response = await twitch.streamerApiRequest(streamer,
|
||
|
"/moderation/banned?broadcaster_id=" + streamer.userid);
|
||
|
var dbconn = await db.connect();
|
||
|
try {
|
||
|
await dbconn.query('BEGIN');
|
||
|
await dbconn.query("DELETE FROM bans");
|
||
|
log(LogLevel.DEBUG,"Ban list:")
|
||
|
log(LogLevel.DEBUG,JSON.stringify(response.data,null,2));
|
||
|
var insertBanQuery = "INSERT INTO bans (userid) VALUES ";
|
||
|
var banRow = 0;
|
||
|
var bansArray: number[] = [];
|
||
|
for (var ban of response.data) {
|
||
|
if (ban.expires_at == '') {
|
||
|
banRow++;
|
||
|
insertBanQuery += `($${banRow}), `;
|
||
|
bansArray.push(ban.user_id as number);
|
||
|
}
|
||
|
}
|
||
|
var banQueryConfig = {
|
||
|
text: insertBanQuery.slice(0,-2), // Cut last `, ` off of the end
|
||
|
values: bansArray
|
||
|
};
|
||
|
log(LogLevel.DEBUG,"banQueryConfig object:")
|
||
|
log(LogLevel.DEBUG,JSON.stringify(banQueryConfig,null,2))
|
||
|
await dbconn.query(banQueryConfig);
|
||
|
await dbconn.query("CALL update_scores()");
|
||
|
await dbconn.query('COMMIT');
|
||
|
} catch (e) {
|
||
|
log(LogLevel.ERROR,"cronjobs.processBans: Exception thrown; rolling back");
|
||
|
await dbconn.query('ROLLBACK');
|
||
|
throw(e);
|
||
|
} finally {
|
||
|
await dbconn.release();
|
||
|
}
|
||
|
}
|