Compare commits
3 commits
67b10d949a
...
ea5954a9ff
Author | SHA1 | Date | |
---|---|---|---|
ea5954a9ff | |||
cbac881a49 | |||
53cb448e36 |
11 changed files with 53 additions and 43 deletions
6
package-lock.json
generated
6
package-lock.json
generated
|
@ -1,12 +1,12 @@
|
||||||
{
|
{
|
||||||
"name": "dblang",
|
"name": "dblang",
|
||||||
"version": "1.0.0",
|
"version": "0.7.0",
|
||||||
"lockfileVersion": 3,
|
"lockfileVersion": 3,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "dblang",
|
"name": "dblang",
|
||||||
"version": "1.0.0",
|
"version": "0.7.0",
|
||||||
"license": "UNLICENSED",
|
"license": "UNLICENSED",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"mariadb": "^3.0.2",
|
"mariadb": "^3.0.2",
|
||||||
|
@ -19,7 +19,7 @@
|
||||||
"typescript": "^4.9.4"
|
"typescript": "^4.9.4"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">= 14"
|
"node": ">= 16"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@esbuild/android-arm": {
|
"node_modules/@esbuild/android-arm": {
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
{
|
{
|
||||||
"name": "dblang",
|
"name": "dblang",
|
||||||
"version": "0.6.2",
|
"version": "0.7.0",
|
||||||
"description": "",
|
"description": "",
|
||||||
"main": "dist/db.js",
|
"main": "dist/db.js",
|
||||||
"types": "dist/db.d.ts",
|
"types": "dist/db.d.ts",
|
||||||
"type": "commonjs",
|
"type": "module",
|
||||||
"directories": {
|
"directories": {
|
||||||
"dist": "dist"
|
"dist": "dist"
|
||||||
},
|
},
|
||||||
|
@ -22,7 +22,7 @@
|
||||||
"pg": "^8.9.0"
|
"pg": "^8.9.0"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">= 14"
|
"node": ">= 16"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/node": "^18.11.18",
|
"@types/node": "^18.11.18",
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
import { Attribute, DB, Table } from "./db"
|
import { Attribute, DB, Table } from "./db.js"
|
||||||
import { Handler } from "./defaultHandler";
|
import { Handler } from "./defaultHandler.js";
|
||||||
|
|
||||||
export class AttributeAlias {
|
export class AttributeAlias {
|
||||||
name: string;
|
name: string;
|
||||||
|
|
21
src/db.ts
21
src/db.ts
|
@ -1,12 +1,17 @@
|
||||||
import mariadb from 'mariadb';
|
import mariadb from 'mariadb';
|
||||||
import { checkConstraint, Constraint, Datatype, foreignConstraint, uniqueConstraint } from './dbStructure';
|
import { checkConstraint, Constraint, Datatype, foreignConstraint, uniqueConstraint } from './dbStructure.js';
|
||||||
import { Handler } from './defaultHandler';
|
import { Handler } from './defaultHandler.js';
|
||||||
import { Query } from './query';
|
import { Query } from './query.js';
|
||||||
import { attributeSettings, extendedAttributeSettings, onAction, dbType } from './types';
|
import { attributeSettings, extendedAttributeSettings, onAction, dbType } from './types.js';
|
||||||
import { TableAlias } from "./alias"
|
import { TableAlias } from "./alias.js"
|
||||||
import { insertResponse, readResponse, writeResponse, singleResponse } from "./responses"
|
import { insertResponse, readResponse, writeResponse, singleResponse } from "./responses.js"
|
||||||
//import { postgresHandler } from "./postgresHandler"
|
//import { postgresHandler } from "./postgresHandler"
|
||||||
|
|
||||||
|
declare module "mariadb" {
|
||||||
|
interface Pool{
|
||||||
|
on(ev: 'error', callback: () => void): Pool;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
export class DB {
|
export class DB {
|
||||||
tables: Table[] = [];
|
tables: Table[] = [];
|
||||||
|
@ -21,6 +26,8 @@ export class DB {
|
||||||
this.type = databaseType;
|
this.type = databaseType;
|
||||||
if (databaseType == dbType.mariadb) {
|
if (databaseType == dbType.mariadb) {
|
||||||
this.mariaPool = mariadb.createPool({ host, user, password, port, database, connectionLimit, multipleStatements: true });
|
this.mariaPool = mariadb.createPool({ host, user, password, port, database, connectionLimit, multipleStatements: true });
|
||||||
|
// catch errors
|
||||||
|
this.mariaPool.on("error",()=>{});
|
||||||
this.handler = new Handler(this);
|
this.handler = new Handler(this);
|
||||||
}
|
}
|
||||||
/*else if (databaseType == dbType.postgres) {
|
/*else if (databaseType == dbType.postgres) {
|
||||||
|
@ -170,7 +177,7 @@ export class Table {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export * from './funcs';
|
export * from './funcs.js';
|
||||||
export { onAction };
|
export { onAction };
|
||||||
export { dbType as databaseType }
|
export { dbType as databaseType }
|
||||||
export { readResponse, writeResponse, insertResponse, singleResponse }
|
export { readResponse, writeResponse, insertResponse, singleResponse }
|
|
@ -1,7 +1,7 @@
|
||||||
import { Attribute, Table } from "./db";
|
import { Attribute, Table } from "./db.js";
|
||||||
import { Handler } from "./defaultHandler";
|
import { Handler } from "./defaultHandler.js";
|
||||||
import { QueryBuilder } from "./query";
|
import { QueryBuilder } from "./query.js";
|
||||||
import { allModifierInput, joinElements, joinType, onAction, primaryData, serializeReturn } from "./types";
|
import { allModifierInput, joinElements, joinType, onAction, primaryData, serializeReturn } from "./types.js";
|
||||||
|
|
||||||
export class Datatype {
|
export class Datatype {
|
||||||
type: string;
|
type: string;
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
import { AttributeAlias, TableAlias } from "./alias";
|
import { AttributeAlias, TableAlias } from "./alias.js";
|
||||||
import { Attribute, DB, insertResponse, readResponse, Table, writeResponse } from "./db"
|
import { Attribute, DB, insertResponse, readResponse, Table, writeResponse } from "./db.js"
|
||||||
import { Aggregation, checkConstraint, joinCross, Datatype, foreignConstraint, Modifier, joinNatural, onJoin, uniqueConstraint, usingJoin } from "./dbStructure"
|
import { Aggregation, checkConstraint, joinCross, Datatype, foreignConstraint, Modifier, joinNatural, onJoin, uniqueConstraint, usingJoin } from "./dbStructure.js"
|
||||||
import { insertQuery, Query, QueryBuilder, removeQuery, selectQuery, updateQuery } from "./query"
|
import { insertQuery, Query, QueryBuilder, removeQuery, selectQuery, updateQuery } from "./query.js"
|
||||||
import { allModifierInput, joinType, onAction, primaryData } from "./types"
|
import { allModifierInput, joinType, onAction, primaryData } from "./types.js"
|
||||||
|
|
||||||
export class Handler {
|
export class Handler {
|
||||||
db: DB;
|
db: DB;
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
import { Attribute, Table } from "./db";
|
import { Attribute, Table } from "./db.js";
|
||||||
import { Aggregation, BooleanModifier, checkConstraint, Datatype, foreignConstraint, joinCross, joinNatural, usingJoin, onJoin, NumberModifier, StringModifier, uniqueConstraint } from "./dbStructure";
|
import { Aggregation, BooleanModifier, checkConstraint, Datatype, foreignConstraint, joinCross, joinNatural, usingJoin, onJoin, NumberModifier, StringModifier, uniqueConstraint } from "./dbStructure.js";
|
||||||
import { insertQuery, removeQuery, selectQuery, updateQuery } from "./query";
|
import { insertQuery, removeQuery, selectQuery, updateQuery } from "./query.js";
|
||||||
import { allModifierInput, joinType, selectElements, selectFromElements } from "./types";
|
import { allModifierInput, joinType, selectElements, selectFromElements } from "./types.js";
|
||||||
|
|
||||||
//modifiers
|
//modifiers
|
||||||
export const and = (...args: BooleanModifier[]) => new BooleanModifier("and", args);
|
export const and = (...args: BooleanModifier[]) => new BooleanModifier("and", args);
|
||||||
|
|
12
src/query.ts
12
src/query.ts
|
@ -1,8 +1,8 @@
|
||||||
import { AttributeAlias } from "./alias";
|
import { AttributeAlias } from "./alias.js";
|
||||||
import { Attribute, DB, Table } from "./db";
|
import { Attribute, DB, Table } from "./db.js";
|
||||||
import { BooleanModifier, Modifier } from "./dbStructure";
|
import { BooleanModifier, Modifier } from "./dbStructure.js";
|
||||||
import { Handler } from "./defaultHandler";
|
import { Handler } from "./defaultHandler.js";
|
||||||
import { allModifierInput, primaryData, selectElements, selectFromElements, serializeReturn } from "./types";
|
import { allModifierInput, primaryData, selectElements, selectFromElements, serializeReturn } from "./types.js";
|
||||||
|
|
||||||
|
|
||||||
export class Query {
|
export class Query {
|
||||||
|
@ -101,7 +101,7 @@ export class selectQuery {
|
||||||
const builder = this.serialize(handler);
|
const builder = this.serialize(handler);
|
||||||
const s = handler.builders.query(builder);
|
const s = handler.builders.query(builder);
|
||||||
let readResp = await db.query(s, printQuery);
|
let readResp = await db.query(s, printQuery);
|
||||||
return db.getHandler().responses.readResponse(readResp);
|
return handler.responses.readResponse(readResp);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
import { AttributeAlias } from "./alias";
|
import { AttributeAlias } from "./alias.js";
|
||||||
import { Attribute } from "./db";
|
import { Attribute } from "./db.js";
|
||||||
import { primaryData } from "./types";
|
import { primaryData } from "./types.js";
|
||||||
|
|
||||||
export class singleResponse {
|
export class singleResponse {
|
||||||
[key: string]: primaryData | any;
|
[key: string]: primaryData | any;
|
||||||
|
@ -15,7 +15,9 @@ export class singleResponse {
|
||||||
export class readResponse extends Array<singleResponse>{
|
export class readResponse extends Array<singleResponse>{
|
||||||
constructor(rows: ({ [key: string]: primaryData })[]) {
|
constructor(rows: ({ [key: string]: primaryData })[]) {
|
||||||
super();
|
super();
|
||||||
this.push(...rows.map(r => new singleResponse(r)));
|
for(let i = 0; i < rows.length; i++){
|
||||||
|
this[i] = new singleResponse(rows[i])
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
import { AttributeAlias, TableAlias } from "./alias";
|
import { AttributeAlias, TableAlias } from "./alias.js";
|
||||||
import { Attribute, Table } from "./db";
|
import { Attribute, Table } from "./db.js";
|
||||||
import { Aggregation, BooleanModifier, Datatype, Joins, Modifier } from "./dbStructure";
|
import { Aggregation, BooleanModifier, Datatype, Joins, Modifier } from "./dbStructure.js";
|
||||||
import { QueryBuilder, selectQuery } from "./query";
|
import { QueryBuilder, selectQuery } from "./query.js";
|
||||||
|
|
||||||
export type primaryData = string | number | boolean | null;
|
export type primaryData = string | number | boolean | null;
|
||||||
export type allModifierInput = primaryData | Modifier | selectQuery | Attribute | AttributeAlias | Aggregation;
|
export type allModifierInput = primaryData | Modifier | selectQuery | Attribute | AttributeAlias | Aggregation;
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
{
|
{
|
||||||
"compilerOptions": {
|
"compilerOptions": {
|
||||||
"module": "CommonJS",
|
"target": "ES6",
|
||||||
|
"module": "ES6",
|
||||||
"lib": ["es6"],
|
"lib": ["es6"],
|
||||||
"types": ["node"],
|
"types": ["node"],
|
||||||
"declaration": true,
|
"declaration": true,
|
||||||
|
|
Loading…
Reference in a new issue