2023-07-17 02:16:54 -04:00
const { serverType , ArtConnSettings , aquaSrvDir } = require ( './config.json' ) ;
2023-07-16 04:06:49 -04:00
const sqlite3 = require ( 'sqlite3' ) . verbose ( ) ;
2023-07-16 23:01:19 -04:00
var db = undefined ;
if ( serverType === 0 ) {
2023-07-17 02:16:54 -04:00
db = new sqlite3 . Database ( aquaSrvDir + '\\db.sqlite' ) ;
2023-07-16 23:01:19 -04:00
}
2023-07-16 22:54:56 -04:00
const mysql = require ( 'mysql' ) ;
2023-07-19 13:13:39 -04:00
//var con = mysql.createConnection(ArtConnSettings);
var pool = mysql . createPool ( ArtConnSettings ) ;
2023-07-16 22:54:56 -04:00
if ( serverType === 1 ) {
2023-07-19 13:54:45 -04:00
function establishConnection ( ) {
return new Promise ( ( resolve , reject ) => {
pool . getConnection ( function ( err , con ) {
2023-07-19 16:43:39 -04:00
if ( err ) console . error ( "ERR: You lost a connection.\n" + err ) ; // not connected!
2023-07-19 13:54:45 -04:00
resolve ( con ) ;
2023-07-16 22:54:56 -04:00
} ) ;
2023-07-19 13:54:45 -04:00
} ) ;
}
2023-07-16 22:54:56 -04:00
}
2023-07-16 04:06:49 -04:00
// index.js route '/'
async function getUserCount ( ) {
if ( serverType === 0 ) {
return new Promise ( ( resolve , reject ) => {
2023-07-16 22:54:56 -04:00
db . all ( 'SELECT * FROM sega_card' , ( err , rows ) => {
if ( err ) {
console . error ( err ) ;
res . render ( 'error' , { error : err } ) ;
reject ( err )
} else {
resolve ( rows . length )
}
} ) ;
2023-07-16 04:06:49 -04:00
} ) ;
} else {
2023-07-19 13:54:45 -04:00
var con = await establishConnection ( ) ;
2023-07-16 22:54:56 -04:00
return new Promise ( ( resolve , reject ) => {
con . query ( "SELECT * FROM aime.mai2_profile_detail" , function ( err , result , fields ) {
if ( err ) {
reject ( err )
throw err
} ;
2023-07-19 13:13:39 -04:00
con . release ( ) ;
2023-07-19 16:43:39 -04:00
resolve ( JSON . parse ( JSON . stringify ( result ) ) . length ) ;
2023-07-16 22:54:56 -04:00
} ) ;
} ) ;
2023-07-16 04:06:49 -04:00
}
}
// index.js & api.js /getUserData/
async function getUserData ( req ) {
if ( serverType === 0 ) {
return new Promise ( ( resolve , reject ) => {
const cookies = req . cookies
db . all ( 'SELECT * FROM maimai2_user_detail' , ( err , rows ) => {
if ( err ) {
console . error ( err ) ;
// Return a Failed Message.
reject ( err )
} else {
// Make the Request easier to get to.
var mUser = undefined // Leave the Matched User undefined until the user is found.
for ( user of rows ) { // For Each User in Rows
if ( cookies . aime _card _id === user . aime _card _id . toString ( ) ) { // If the Access Code for the card is in the system,
mUser = user ; // set the Matched User Variable to the User, and break the for Loop.
break ;
}
}
if ( mUser ) {
// Return a Response with the whole identifiable user data. the EXT_ID will be used later to identify images and other things and match them to the user's profile.
resolve ( mUser ) ;
} else {
reject ( new Error ( 'User not found' ) ) ;
}
}
} ) ;
} ) ; // function is required to obtain the User Data, and create the user profile. I'm going to bed.
} else { // 07-23 oh god im going to have to recreate this function again aren't i
2023-07-19 13:54:45 -04:00
var con = await establishConnection ( ) ;
2023-07-16 22:54:56 -04:00
return new Promise ( ( resolve , reject ) => {
con . query ( "SELECT * FROM aime.mai2_profile_detail" , function ( err , result , fields ) {
if ( err ) {
reject ( err )
throw err
} ;
// Make the Request easier to get to.
const cookies = req . cookies
var mUser = undefined // Leave the Matched User undefined until the user is found.
for ( user of result ) { // For Each User in Rows
if ( cookies . aime _card _id === user . user . toString ( ) ) { // If the Access Code for the card is in the system,
mUser = user ; // set the Matched User Variable to the User, and break the for Loop.
break ;
}
}
if ( mUser ) {
// Return a Response with the whole identifiable user data. the EXT_ID will be used later to identify images and other things and match them to the user's profile.
2023-07-19 13:13:39 -04:00
con . release ( ) ;
2023-07-19 16:43:39 -04:00
resolve ( mUser ) ;
2023-07-16 22:54:56 -04:00
} else {
reject ( new Error ( 'User not found' ) ) ;
}
} )
} ) ;
} ;
2023-07-16 04:06:49 -04:00
}
// api.js /getExtId/
async function getExtId ( req ) {
if ( serverType === 0 ) {
return new Promise ( ( resolve , reject ) => {
2023-07-16 22:54:56 -04:00
db . all ( 'SELECT * FROM sega_card' , ( err , rows ) => {
if ( err ) {
console . error ( err ) ;
// Return a Failed Message.
reject ( err )
} else {
// Make the Request easier to get to.
var request = req . body ;
var mUser = undefined // Leave the Matched User undefined until the user is found.
for ( user of rows ) { // For Each User in Rows
if ( request . input === user . luid ) { // If the Access Code for the card is in the system,
mUser = user ; // set the Matched User Variable to the User, and break the for Loop.
break
}
}
// Return a Response with the whole identifiable user data. the EXT_ID will be used later to identify images and other things and match them to the user's profile.
resolve ( mUser )
}
} ) ;
} ) ;
} else {
2023-07-19 13:54:45 -04:00
var con = await establishConnection ( ) ;
2023-07-16 22:54:56 -04:00
return new Promise ( ( resolve , reject ) => {
con . query ( "SELECT * FROM aime.aime_card" , function ( err , result , fields ) {
if ( err ) {
reject ( err )
throw err
} ;
2023-07-16 04:06:49 -04:00
// Make the Request easier to get to.
var request = req . body ;
var mUser = undefined // Leave the Matched User undefined until the user is found.
2023-07-16 22:54:56 -04:00
for ( user of result ) { // For Each User in Rows
if ( request . input === user . access _code ) { // If the Access Code for the card is in the system,
2023-07-16 04:06:49 -04:00
mUser = user ; // set the Matched User Variable to the User, and break the for Loop.
2023-07-16 22:54:56 -04:00
break ;
2023-07-16 04:06:49 -04:00
}
}
2023-07-16 22:54:56 -04:00
if ( mUser ) {
// Return a Response with the whole identifiable user data. the EXT_ID will be used later to identify images and other things and match them to the user's profile.
2023-07-19 13:13:39 -04:00
con . release ( ) ;
2023-07-19 16:43:39 -04:00
resolve ( mUser ) ;
2023-07-16 22:54:56 -04:00
} else {
reject ( new Error ( 'User not found' ) ) ;
}
} )
2023-07-16 04:06:49 -04:00
} ) ;
}
}
// api /getUserScores/
async function getUserScores ( req ) {
if ( serverType === 0 ) {
return new Promise ( ( resolve , reject ) => {
2023-07-16 22:54:56 -04:00
db . all ( 'SELECT * FROM maimai2_user_playlog' , ( err , rows ) => {
if ( err ) {
console . error ( err ) ;
reject ( err )
// Return a Failed Message.
} else {
// Make the Request easier to get to.
var request = req . body ;
var mUser = new Array ( ) ; // Leave the Matched User's Scores undefined until the user is found.
for ( score of rows ) { // For Each Score in Rows
if ( request . input == score . user _id ) { // If the inputed User ID and Score's User ID Matches,
mUser . push ( score ) // add that score into the array.
}
}
// Return a Response with all the Scores listed under that user.
resolve ( mUser )
}
} ) ;
} ) ;
} else {
2023-07-19 13:54:45 -04:00
var con = await establishConnection ( ) ;
2023-07-16 22:54:56 -04:00
return new Promise ( ( resolve , reject ) => {
con . query ( "SELECT * FROM aime.mai2_playlog" , function ( err , result , fields ) {
if ( err ) {
reject ( err )
throw err
} ;
// Make the Request easier to get to.
const cookies = req . cookies
var mUser = undefined // Leave the Matched User undefined until the user is found.
2023-07-16 04:06:49 -04:00
// Make the Request easier to get to.
var request = req . body ;
var mUser = new Array ( ) ; // Leave the Matched User's Scores undefined until the user is found.
2023-07-16 22:54:56 -04:00
for ( score of result ) { // For Each Score in Rows
if ( request . input == score . user ) { // If the inputed User ID and Score's User ID Matches,
2023-07-16 04:06:49 -04:00
mUser . push ( score ) // add that score into the array.
}
}
// Return a Response with all the Scores listed under that user.
2023-07-19 13:13:39 -04:00
con . release ( ) ;
2023-07-19 16:43:39 -04:00
resolve ( mUser ) ;
2023-07-16 22:54:56 -04:00
} )
2023-07-16 04:06:49 -04:00
} ) ;
}
}
// api /getUserArea/
async function getUserArea ( req ) {
if ( serverType === 0 ) {
return new Promise ( ( resolve , reject ) => {
2023-07-16 22:54:56 -04:00
db . all ( 'SELECT * FROM maimai2_user_map' , ( err , rows ) => {
if ( err ) {
console . error ( err ) ;
// Return a Failed Message.
reject ( err )
} else {
// Make the Request easier to get to.
var request = req . body ;
var mUser = new Array ( ) ; // Leave the Matched User's Areas undefined until the user is found.
for ( map of rows ) { // For Each Area in Rows
if ( request . input == map . user _id ) { // If the inputed User ID and Score's User ID Matches,
mUser . push ( map ) // add that Area into the array.
}
}
// Return a Response with all the Areas listed under that user.
resolve ( mUser )
}
} ) ;
} ) ;
} else {
2023-07-19 13:54:45 -04:00
var con = await establishConnection ( ) ;
2023-07-16 22:54:56 -04:00
return new Promise ( ( resolve , reject ) => {
con . query ( "SELECT * FROM aime.mai2_item_map" , function ( err , result , fields ) {
if ( err ) {
reject ( err )
throw err
} ;
// Make the Request easier to get to.
const cookies = req . cookies
var mUser = undefined // Leave the Matched User undefined until the user is found.
2023-07-16 04:06:49 -04:00
// Make the Request easier to get to.
var request = req . body ;
2023-07-16 22:54:56 -04:00
var mUser = new Array ( ) ; // Leave the Matched User's Scores undefined until the user is found.
for ( score of result ) { // For Each Score in Rows
console . log ( request . input )
if ( request . input == score . user ) { // If the inputed User ID and Score's User ID Matches,
mUser . push ( score ) // add that score into the array.
2023-07-16 04:06:49 -04:00
}
}
2023-07-16 22:54:56 -04:00
// Return a Response with all the Scores listed under that user.
2023-07-19 13:13:39 -04:00
con . release ( ) ;
2023-07-19 16:43:39 -04:00
resolve ( mUser )
2023-07-16 22:54:56 -04:00
} )
2023-07-16 04:06:49 -04:00
} ) ;
}
}
/* side note: User Banned & User Unbanned should be tied into 1 commnand that toggles it but maybe not, i dont really know */
// api /getUserBanned/
async function getUserBanned ( req ) {
if ( serverType === 0 ) {
return new Promise ( ( resolve , reject ) => {
2023-07-16 22:54:56 -04:00
var request = req . body ;
if ( request . input === undefined ) {
2023-07-25 00:50:15 -04:00
return reject ( 'Failed to update user ban state, insufficent paramaters' ) ;
2023-07-16 04:06:49 -04:00
}
2023-07-16 22:54:56 -04:00
db . run ( 'UPDATE maimai2_user_detail SET ban_state = ? WHERE id = ?' , [ 2 , request . input ] , function ( err ) {
if ( err ) {
console . error ( err . message ) ;
reject ( { "status" : "failure" , "message" : "Unable to ban user, see reason" , "reason" : err } ) ;
} else {
resolve ( { "status" : "Success" , "message" : ` User ${ request . input } banned. ` } )
}
} ) ;
2023-07-16 04:06:49 -04:00
} ) ;
} else {
2023-07-25 00:50:15 -04:00
var con = await establishConnection ( ) ;
return new Promise ( ( resolve , reject ) => {
var request = req . body ;
con . query ( ` UPDATE aime.mai2_profile_detail SET banState = 2 WHERE user = ${ request . input } ` , function ( err , result , fields ) {
if ( err ) {
reject ( { "status" : "failure" , "message" : "Unable to ban user, see reason" , "reason" : err } )
throw err
} ;
con . release ( ) ;
resolve ( { "status" : "Success" , "message" : ` User ${ request . input } banned. ` } )
} )
} ) ;
2023-07-16 04:06:49 -04:00
}
}
// api /getUserUnbanned/
async function getUserUnbanned ( req ) {
if ( serverType === 0 ) {
return new Promise ( ( resolve , reject ) => {
2023-07-16 22:54:56 -04:00
var request = req . body ;
if ( request . input === undefined ) {
return reject ( 'Failed to update user ban state, insufficent paramaters' )
return
2023-07-16 04:06:49 -04:00
}
2023-07-16 22:54:56 -04:00
db . run ( 'UPDATE maimai2_user_detail SET ban_state = ? WHERE id = ?' , [ 0 , request . input ] , function ( err ) {
if ( err ) {
console . error ( err . message ) ;
reject ( { "status" : "failure" , "message" : "Unable to ban user, see reason" , "reason" : err } ) ;
} else {
resolve ( { "status" : "Success" , "message" : ` User ${ request . input } banned. ` } )
}
} ) ;
2023-07-16 04:06:49 -04:00
} ) ;
} else {
2023-07-25 00:50:15 -04:00
var con = await establishConnection ( ) ;
return new Promise ( ( resolve , reject ) => {
var request = req . body ;
con . query ( ` UPDATE aime.mai2_profile_detail SET banState = 0 WHERE user = ${ request . input } ` , function ( err , result , fields ) {
if ( err ) {
reject ( { "status" : "failure" , "message" : "Unable to ban user, see reason" , "reason" : err } )
throw err
} ;
con . release ( ) ;
resolve ( { "status" : "Success" , "message" : ` User ${ request . input } banned. ` } )
} )
} ) ;
2023-07-16 04:06:49 -04:00
}
}
2023-07-16 22:54:56 -04:00
module . exports = { getUserCount , getUserData , getUserScores , getUserArea , getUserBanned , getUserUnbanned , getExtId } ;