Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- fs = require('fs');
- sys = require('sys');
- log = require('./log');
- var Database = []
- var str = '';
- var cache;
- var buffer = 0;
- var bufferAmount = 0;
- var Maps = [];
- var Badwords = [];
- exports.Database = function ( callback ) {
- if ( callback && typeof callback == 'function' ) {
- log.debug( 'Server gestartet' );
- bufferAmount++;
- fs.readFile('./src/badwords.txt', function ( err, data ) {
- if ( err ) {
- log.error( 'Ein Fehler ist aufgetreten während dem laden des Badwords Filters' );
- }
- Badwords = data.toString().split('\n');
- log.debug( 'Es wurden ' + Badwords.length + ' Badwords Phrases geladen.' );
- log.debug( 'Badwords Filter bereit' );
- buffer++;
- });
- fs.readdir('./Database', function ( err, files ) {
- if ( files.length != 0 ) {
- bufferAmount += files.length;
- for ( var i = 0; i < files.length; i++ ) {
- var name = files[ i ].split('.');
- fs.readFile( './Database/' + files[ i ], function ( err, data ) {
- db = JSON.parse( data.toString() );
- Database[ name[ 0 ] ] = {}
- Database[ name[ 0 ] ].structure = db.table;
- Database[ name[ 0 ] ].rows = db.rows;
- log.debug( 'Datenbank ' + name[ 0 ] + ' wurde verarbeitet' );
- buffer++;
- });
- }
- }
- else
- {
- log.succes( 'Keine Datenbanken zum verarbeiten gefunden.' );
- }
- // lesen der Karten..
- fs.readdir('./src/maps', function ( mapErr, mapFiles ) {
- bufferAmount += mapFiles.length;
- for ( var i = 0; i < mapFiles.length; i++ ) {
- var name = mapFiles[ i ].split('.');
- fs.readFile( './src/maps/' + mapFiles[ i ], function ( err, data ) {
- str = JSON.parse( data.toString() );
- Maps[ name[ 0 ] ] = str;
- log.debug( 'Karte ' + name[ 0 ] + ' wurde geladen' );
- buffer++;
- });
- }
- });
- i = setInterval(function () {
- if ( buffer == bufferAmount) {
- log.debug( 'Server ist bereit.' );
- callback.call();
- clearInterval( i );
- }
- }, 20);
- });
- }
- else
- {
- log.error( 'Der Database Parameter muss eine Callback Funktion sein.' );
- }
- }
- exports.createDatabase = function ( name, structure ) {
- log.debug( 'Neue Datenbank ' + name + ' wurde angelegt' );
- newDB = fs.createWriteStream( './Database/' + name + '.js', {'flags': 'w'} );
- newDB.write( JSON.stringify( { table: structure, rows: [] } ) );
- }
- exports.readDatabase = function ( name ) {
- log.debug( 'Datenbank' + name + ' wird gelesen..' );
- fs.readFile( './Database/' + name + '.js', function ( err, data ) {
- if ( err ) log.error( err );
- console.log( "\n" );
- db = JSON.parse( data.toString() );
- for ( i in db.table ) {
- str += i + ' ';
- }
- console.log( str );
- str = '';
- if ( db.rows.length != 0 ) {
- for ( var i = 0; i < db.rows.length; i++ ) {
- for ( k in db.rows[ i ] ) {
- str += db.rows[ i ][ k ] + ' ';
- }
- console.log( str );
- str = '';
- }
- }
- else
- {
- log.succes( 'Keine Datenbankzeilen gefunden' );
- }
- });
- }
- exports.insert = function ( into, values ) {
- structure = Database[ into ].structure;
- obj = {}
- for ( var i in structure ) {
- if ( values[ i ] == undefined ) {
- if ( structure[ i ] == '//' ) {
- obj[ i ] = Database[ into ].rows.length + 1;
- }
- else if ( structure[ i ] == 'varchar' ) {
- obj[ i ] = '';
- }
- else {
- obj[ i ] = 0;
- }
- }
- else
- {
- obj[ i ] = values[ i ];
- }
- }
- log.debug( 'Eintrag in Datenbank ' + into + ' einfügen..' );
- Database[ into ].rows.push( obj );
- this.updateDatabase();
- }
- exports.select = function ( query ) {
- log.debug( ' SELECT Query ausgeführt: ' + query);
- segments = query.split(' ');
- if ( segments[0] == 'FROM' ) {
- if ( Database[ segments[1] ] != undefined ) {
- if ( segments[2] == 'WHERE' ) {
- ret = [];
- for ( var i = 0; i < Database[ segments[1] ].rows.length; i++ ) {
- if ( segments[9] != undefined && segments[9] == 'LIMIT' && segments[10] != undefined ) {
- if ( i > parseInt( segments[10] ) ) {
- return false;
- }
- }
- if ( segments[6] == 'AND' ) {
- if ( this.logicalOperator( Database[ segments[1] ].rows[ i ][ segments[3] ], segments[9], segments[8] ) == true && this.logicalOperator( Database[ segments[1] ].rows[ i ], segments[5], segments[4] ) == true ) {
- ret.push( Database[ segments[1] ].rows[ i ] );
- }
- }
- else
- {
- if ( this.logicalOperator( Database[ segments[1] ].rows[ i ][ segments[3] ], segments[5], segments[4] ) == true ) {
- ret.push( Database[ segments[1] ].rows[ i ] );
- }
- }
- }
- return ret;
- }
- else
- {
- return Database[ segments[1] ].rows;
- }
- }
- else
- {
- log.error( 'Datenbank ' + segments[1] + ' existiert nicht' );
- }
- }
- else {
- log.error( 'Syntax Fehler bei "' + segments[0] + ' ' + segments[1] + '.." Groß und Kleinschreibung beachten' );
- }
- this.updateDatabase();
- }
- exports.update = function ( query, query2 ) {
- log.debug( 'UPDATE Query ausgeführt: ' + query + ' ' + query2 );
- segments = query.split(' ');
- segments2 = query2.split(' ');
- if ( segments[0] == 'IN' ) {
- if ( Database[ segments[1] ] != undefined ) {
- if ( segments[2] == 'WHERE' ) {
- for ( var i = 0; i < Database[ segments[1] ].rows.length; i++ ) {
- if ( segments[6] == 'AND' ) {
- if ( this.logicalOperator( Database[ segments[1] ].rows[ i ][ segments[3] ], segments[9], segments[8] ) == true && this.logicalOperator( Database[ segments[1] ].rows[ i ], segments[5], segments[4] ) == true ) {
- Database[ segments[1] ].rows[ i ][ segments2[ 1 ] ] = segments2[ 3 ];
- }
- }
- else
- {
- if ( this.logicalOperator( Database[ segments[1] ].rows[ i ][ segments[3] ], segments[5], segments[4] ) == true ) {
- Database[ segments[1] ].rows[ i ][ segments2[ 1 ] ] = segments2[ 3 ];
- }
- }
- }
- }
- else
- {
- for ( var i = 0; i < Database[ segments[1] ].rows.length; i++ ) {
- Database[ segments[1] ].rows[ i ][ segments2[ 1 ] ] = segments2[ 3 ];
- }
- return;
- }
- }
- else
- {
- log.error( 'Datenbank ' + segments[1] + ' existiert nicht' );
- }
- }
- else {
- log.error( 'Syntax Fehler bei "' + segments[0] + ' ' + segments[1] + '.." Groß und Kleinschreibung beachten' );
- }
- this.updateDatabase();
- }
- exports.numRows = function ( array ) {
- if ( typeof array == 'object' ) {
- return array.length;
- }
- else
- {
- log.error( 'Fehler in numRows :: Dies ist kein Array' );
- }
- }
- exports.logicalOperator = function ( a, b, operator ) {
- switch ( operator ) {
- case '=':
- return ( a == b ) ? true : false ;
- break;
- case '!=':
- return ( a != b ) ? true : false ;
- break;
- case '<=':
- return ( a <= b ) ? true : false ;
- break;
- case '>=':
- return ( a >= b ) ? true : false ;
- break;
- case '===':
- return ( a === b ) ? true : false ;
- break;
- default:
- return false;
- }
- }
- exports.updateDatabase = function () {
- for ( i in Database ) {
- db = fs.createWriteStream( './Database/' + i + '.js', {'flags': 'w'} );
- obj = {}
- obj.table = Database[ i ].structure;
- obj.rows = Database[ i ].rows;
- db.write( JSON.stringify( obj ) );
- }
- log.succes( ' ### Datenbank gespeichert' );
- }
- exports.optimizeSingleQuery = function ( array ) {
- if (typeof array == 'object') {
- return array[0];
- }
- }
- exports.game_getMap = function ( key ) {
- if ( Maps[ key ] == undefined ) {
- return false;
- }
- return Maps[ key ];
- }
- exports.getBadwords = function () {
- return Badwords;
- }
Add Comment
Please, Sign In to add comment