database.js 2.3 KB

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