database.js 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. const sqlite3 = require('sqlite3').verbose();
  2. const mode = ( process.env.READONLY ? sqlite3.OPEN_READONLY : sqlite3.OPEN_READWRITE );
  3. const db = new sqlite3.Database( './wikibot.db', mode, dberror => {
  4. if ( dberror ) {
  5. console.log( '- ' + shardId + ': Error while connecting to the database: ' + dberror );
  6. return dberror;
  7. }
  8. db.exec( 'PRAGMA foreign_keys = ON; PRAGMA busy_timeout = 1000;', function (error) {
  9. if ( error ) {
  10. console.log( '- ' + shardId + ': Error while enabling the foreign key constraint: ' + error );
  11. }
  12. console.log( '- ' + shardId + ': Connected to the database.' );
  13. getSettings();
  14. } );
  15. } );
  16. /**
  17. * Fill the patreon list.
  18. * @param {Number} [trysettings] - The amount of tries.
  19. */
  20. function getSettings(trysettings = 1) {
  21. db.each( 'SELECT guild, prefix FROM discord WHERE patreon IS NOT NULL', [], (dberror, row) => {
  22. if ( dberror ) {
  23. console.log( '- ' + shardId + ': ' + trysettings + '. Error while getting the patreon: ' + dberror );
  24. if ( trysettings < 10 ) {
  25. trysettings++;
  26. getSettings(trysettings);
  27. }
  28. return dberror;
  29. }
  30. patreons[row.guild] = row.prefix;
  31. }, (dberror) => {
  32. if ( dberror ) {
  33. console.log( '- ' + trysettings + '. Error while getting the patreons: ' + dberror );
  34. if ( trysettings < 10 ) {
  35. trysettings++;
  36. getSettings(trysettings);
  37. }
  38. return dberror;
  39. }
  40. console.log( '- ' + shardId + ': Patreons successfully loaded.' );
  41. getVoice();
  42. } );
  43. }
  44. /**
  45. * Fill the voice list.
  46. * @param {Number} [trysettings] - The amount of tries.
  47. */
  48. function getVoice(trysettings = 1) {
  49. db.each( 'SELECT guild, lang FROM discord WHERE voice IS NOT NULL', [], (dberror, row) => {
  50. if ( dberror ) {
  51. console.log( '- ' + shardId + ': ' + trysettings + '. Error while getting the voice channel: ' + dberror );
  52. if ( trysettings < 10 ) {
  53. trysettings++;
  54. getVoice(trysettings);
  55. }
  56. return dberror;
  57. }
  58. voice[row.guild] = row.lang;
  59. }, (dberror) => {
  60. if ( dberror ) {
  61. console.log( '- ' + shardId + ': ' + trysettings + '. Error while getting the voice channels: ' + dberror );
  62. if ( trysettings < 10 ) {
  63. trysettings++;
  64. getVoice(trysettings);
  65. }
  66. return dberror;
  67. }
  68. console.log( '- ' + shardId + ': Voice channels successfully loaded.' );
  69. } );
  70. }
  71. module.exports = db;