diff --git a/node-mysql-wrapper/node-mysql-wrapper-tests.js b/node-mysql-wrapper/node-mysql-wrapper-tests.js new file mode 100644 index 0000000000..8198792fb8 --- /dev/null +++ b/node-mysql-wrapper/node-mysql-wrapper-tests.js @@ -0,0 +1,14 @@ +/// +var wrapper = require("node-mysql-wrapper"); +var db = wrapper("mysql://kataras:pass@127.0.0.1/taglub?debug=false&charset=utf8"); +db.ready(function () { + db.table("users").on("insert", function (parsedResults) { + }); + db.table("users").findAll().then(function (results) { + console.dir(results); + }); + db.table("users").find({ userId: 18 }, function (results) { + console.dir(results[0]); + }); +}); +//# sourceMappingURL=node-mysql-wrapper-tests.js.map diff --git a/node-mysql-wrapper/node-mysql-wrapper-tests.ts b/node-mysql-wrapper/node-mysql-wrapper-tests.ts new file mode 100644 index 0000000000..ab28b22af1 --- /dev/null +++ b/node-mysql-wrapper/node-mysql-wrapper-tests.ts @@ -0,0 +1,22 @@ +/// + +import wrapper = require("node-mysql-wrapper"); +var db = wrapper("mysql://kataras:pass@127.0.0.1/taglub?debug=false&charset=utf8"); + +db.ready(() => { + + db.table("users").on("insert", (parsedResults) => { + + }); + + db.table("users").findAll().then((results) => { + console.dir(results); + }); + + db.table("users").find({ userId: 18 }, (results) => { + console.dir(results[0]); + }); + + + +}); diff --git a/node-mysql-wrapper/node-mysql-wrapper.d.ts b/node-mysql-wrapper/node-mysql-wrapper.d.ts new file mode 100644 index 0000000000..0a0bd60f21 --- /dev/null +++ b/node-mysql-wrapper/node-mysql-wrapper.d.ts @@ -0,0 +1,133 @@ +// Type definitions for node-mysql-wrapper +// Project: https://github.com/kataras/node-mysql-wrapper +// Definitions by: Makis Maropoulos +// Definitions: https://github.com/borisyankov/DefinitelyTyped + +/// +/// + +declare module "node-mysql-wrapper" { + import Mysql = require("mysql"); + + function MySQLWrapperBuilder(connection: string | Mysql.IConnection, ...useOnlyTables: string[]): MySQLWrapper; + + enum EVENT_TYPES { + INSERT, UPDATE, DELETE, SAVE + } + + interface MySQLConnection { + new (connection: string | Mysql.IConnection): MySQLConnection; + + create(connectionUri: string): void; + create(connection: Mysql.IConnection): void; + + attach(connection: Mysql.IConnection): void; + end(callback: () => void): void; + destroy(): void; + link(callback?: () => void): Promise; + connect(callback?: () => void): Promise; + + useOnly(...useOnlyTables: string[]): void; + + fetchDatabaseInfornation(): Promise; + + escape(val: string): string; + notice(tableWhichCalled: string, queryStr: string, parsedResults: Object[]): void; + fireEvent(tableWhichCalled: string, queryStr: string, parsedResults: Object[]): void; + + watch(tableName: string, evtType: EVENT_TYPES | string, callback: (parsedResults: Object[]) => void): void; + on(tableName: string, evtType: EVENT_TYPES | string, callback: (parsedResults: Object[]) => void): void; + unwatch(tableName: string, evtType: EVENT_TYPES | string, callbackToRemove: () => void): void; + off(tableName: string, evtType: EVENT_TYPES | string, callbackToRemove: () => void): void; + + query(mysqlQuery: Mysql.IQueryFunction): void; + + table(tableName: string): MySQLTable; + } + + interface MySQLTable { + new (tableName: string, connection: MySQLConnection): MySQLTable; + + setColumns(columns: string[]): void; + + setPrimaryKey(primaryKeyColumnName: string): void; + + toString(): string; + + model(jsObject: Object): MySQLModel; + + watch(evtType: EVENT_TYPES | string, callback: (parsedResults: Object[]) => void): void; + on(evtType: EVENT_TYPES | string, callback: (parsedResults: Object[]) => void): void; + unwatch(evtType: EVENT_TYPES|string, callbackToRemove: () => void): void; + off(evtType: EVENT_TYPES|string, callbackToRemove: () => void): void; + + ///START DYNAMIC METHODS FOR TABLES CANNOT BE PRE-DEFINED WITH DYNAMIC WAY, YET, SO: + find(jsObject: Object, callback?: (results: Object[]) => void): Promise; + save(jsObject: Object, callback?: (results: Object[]) => void): Promise; + remove(jsObject: Object, callback?: (results: Object[]) => void): Promise; + delete(jsObject: Object, callback?: (results: Object[]) => void): Promise; + safeDelete(jsObject: Object, callback?: (results: Object[]) => void): Promise; + ///END + findAll(callback?: (results: Object[]) => void): Promise; + + extend(functionName: string, functionToBeSupported: () => any): void; + + has(extendedFunctionName: string): boolean; + + } + + interface MySQLModel { + + new (table: MySQLTable, jsObject: Object): MySQLModel; + + toObjectProperty(columnKey: string): string; + toRowProperty(objectKey: string): string; + + create(jsObject: Object): MySQLModel; + reUse(jsObject: Object): MySQLModel; + + toRow(): void; + getRawObject(): Object; + + parseTable(mysqlTableToSearch: String, parentObject: Object): Promise; + parseResult(result: Object, tablesToSearch: string[]): Promise; + + find(parentObj?: Object): Promise; + findAll(): Promise; + save(): Promise; + safeDelete(): Promise; + remove(): Promise; + delete(): Promise; + + } + + interface MySQLWrapper { + new (connection?: MySQLConnection): MySQLWrapper; + + setConnection(connection: MySQLConnection): void; + + useOnly(...useOnlyTables: string[]): void; + + has(tableName: string): boolean; + has(tableName: string, methodName: string): boolean; + + ready(callback: () => void): void; + noticeReady(): void; + removeReadyListener(callback: () => any): void; + + query: Mysql.IQueryFunction; + + destroy(): void; + end(callback?: () => void): void; + + when(): Promise; + + ///START: WE CANNOT PRE-DEFINE THE DYNAMIC TABLES INTO PROPERTIES, SO WE USE INDEX(STRING-TABLENAME) TO GET A TABLE + table(tableName: string): MySQLTable; + ///END + } + + export = MySQLWrapperBuilder; + + +}