Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
NPM Packages
js-db
Commits
ba403bc0
Commit
ba403bc0
authored
Feb 06, 2020
by
Milan Wikarski
Browse files
Structure change
parent
6426f9a5
Changes
18
Show whitespace changes
Inline
Side-by-side
classes/delete.class.js
deleted
100644 → 0
View file @
6426f9a5
const
Query
=
require
(
'
./query.class
'
);
const
{
Pool
}
=
require
(
'
pg
'
);
const
{
WhereMixin
}
=
require
(
'
../mixins
'
);
/**
* Class for execution of DELETE queries
*
* @class Insert
*/
class
Delete
extends
WhereMixin
(
Query
)
{
/**
* Creates an instance of Delete.
*
* @param {Pool} db
* @param {string} table
*/
constructor
(
db
,
table
)
{
super
(
db
);
this
.
table
=
table
;
}
get
query
()
{
return
`DELETE FROM
${
this
.
table
}
${
this
.
whereSQL
}
`
;
}
}
module
.
exports
=
Delete
;
classes/index.js
deleted
100644 → 0
View file @
6426f9a5
module
.
exports
=
{
Query
:
require
(
'
./query.class
'
),
Select
:
require
(
'
./select.class
'
),
Insert
:
require
(
'
./insert.class
'
),
Delete
:
require
(
'
./delete.class
'
)
};
index.js
View file @
ba403bc0
const
{
Pool
}
=
require
(
'
pg
'
);
module
.
exports
=
require
(
'
./src/database.class
'
);
const
{
Query
,
Select
,
Insert
,
Delete
}
=
require
(
'
./classes
'
);
/**
* Class for communication with PostgreSQL database
*
* @class DB
*/
class
DB
{
/**
*
* @param {Object} params
* @param {string} params.host - Connection Host
* @param {number} params.port - Connection Port
* @param {string} params.database - DB Name
* @param {string} params.user - DB User
* @param {string} params.password - DB Password
*/
constructor
({
host
,
port
,
database
,
user
,
password
})
{
this
.
_db
=
new
Pool
({
host
,
port
,
database
,
user
,
password
});
}
/**
* Creates a Query object
*
* @param {string} query
* @param {Array.<any>} data
* @returns {Query} query
*/
query
(
query
,
data
=
[])
{
return
new
Query
(
this
.
_db
,
query
,
data
);
}
/**
* Creates a Select object
*
* @param {string} table
* @returns {Select} select
*/
select
(
table
)
{
return
new
Select
(
this
.
_db
,
table
);
}
/**
* Creates an Insert object
*
* @param {string} table
* @returns {Insert} insert
*/
insert
(
table
)
{
return
new
Insert
(
this
.
_db
,
table
);
}
/**
* Creates a Delete object
*
* @param {string} table
* @returns {Delete} delete
*/
delete
(
table
)
{
return
new
Delete
(
this
.
_db
,
table
);
}
}
module
.
exports
=
DB
;
src/classes/delete.class.js
0 → 100644
View file @
ba403bc0
const
SpecificQuery
=
require
(
'
./query.specific.class
'
);
const
{
WhereMixin
}
=
require
(
'
../mixins
'
);
class
Delete
extends
WhereMixin
(
SpecificQuery
)
{
get
query
()
{
return
`DELETE FROM
${
this
.
table
}
${
this
.
whereSQL
}
`
;
}
}
module
.
exports
=
Delete
;
classes/insert.class.js
→
src/
classes/insert.class.js
View file @
ba403bc0
const
Query
=
require
(
'
./query.class
'
);
const
SpecificQuery
=
require
(
'
./query.specific.class
'
);
const
{
Pool
}
=
require
(
'
pg
'
);
const
{
ValuesMixin
}
=
require
(
'
../mixins
'
);
const
{
ValuesMixin
}
=
require
(
'
../mixins
'
);
/**
class
Insert
extends
ValuesMixin
(
SpecificQuery
)
{
* Class for execution of INSERT queries
*
* @class Insert
*/
class
Insert
extends
ValuesMixin
(
Query
)
{
/**
* Creates an instance of Insert.
*
* @param {Pool} db
* @param {string} table
*/
constructor
(
db
,
table
)
{
super
(
db
);
this
.
table
=
table
;
}
get
canExecute
()
{
get
canExecute
()
{
return
this
.
_values
!=
null
;
return
this
.
_values
!=
null
;
}
}
...
...
classes/query.class.js
→
src/
classes/query.class.js
View file @
ba403bc0
const
{
Pool
}
=
require
(
'
pg
'
);
/** @typedef {import('../database.class.js') Database} */
class
Query
{
class
Query
{
/**
/**
* Creates an instance of Query.
* Creates an instance of Query.
*
*
* @param {Pool} db
* @param {Database} db
* @param {string} [query='']
* @param {array} [data=[]]
*/
*/
constructor
(
db
,
query
=
''
,
data
=
[]
)
{
constructor
(
db
)
{
this
.
_db
=
db
;
this
.
_db
=
db
.
_
db
;
this
.
_query
=
query
;
this
.
data
=
data
;
this
.
data
=
[]
;
this
.
executed
=
false
;
this
.
executed
=
false
;
this
.
success
=
null
;
this
.
success
=
null
;
...
@@ -20,12 +18,13 @@ class Query {
...
@@ -20,12 +18,13 @@ class Query {
}
}
/**
/**
*
G
et
ter for query; can be overridden
*
R
et
urns the PostgreSQL query
*
*
* @type String
* @readonly
* @readonly
*/
*/
get
query
()
{
get
query
()
{
return
this
.
_query
;
return
null
;
}
}
/**
/**
...
...
src/classes/query.generic.class.js
0 → 100644
View file @
ba403bc0
/** @typedef {import('../database.class') Database}*/
const
Query
=
require
(
'
./query.class
'
);
/**
* Generic query is not bound to any table
*
* @class GenericQuery
* @extends {Query}
*/
class
GenericQuery
extends
Query
{
/**
* Creates an instance of GenericQuery.
*
* @param {Database} db
* @param {String} query
* @param {Object[]} [data=[]]
*/
constructor
(
db
,
query
,
data
=
[])
{
super
(
db
);
this
.
_query
=
query
;
this
.
data
=
data
;
}
/**
* Getter for query; can be overridden
*
* @readonly
*/
get
query
()
{
return
this
.
_query
;
}
}
module
.
exports
=
GenericQuery
;
src/classes/query.specific.class.js
0 → 100644
View file @
ba403bc0
/** @typedef {import('../database.class') Database}*/
const
Query
=
require
(
'
./query.class
'
);
/**
* Specific query is bound to a table.
* This class is used as a parent class for other queries:
* - SELECT
* - INSERT
* - DELETE
* - UPDATE
*
* @class SpecificQuery
* @extends {Query}
*/
class
SpecificQuery
extends
Query
{
/**
* Creates an instance of SpecificQuery.
*
* @param {Database} db
* @param {String} table
* @memberof SpecificQuery
*/
constructor
(
db
,
table
)
{
super
(
db
);
this
.
table
=
table
;
}
}
module
.
exports
=
SpecificQuery
;
classes/select.class.js
→
src/
classes/select.class.js
View file @
ba403bc0
const
Query
=
require
(
'
./query.class
'
);
const
SpecificQuery
=
require
(
'
./query.specific.class
'
);
const
{
Pool
}
=
require
(
'
pg
'
);
const
{
const
{
ColumnsMixin
,
ColumnsMixin
,
LimitMixin
,
LimitMixin
,
...
@@ -7,23 +6,9 @@ const {
...
@@ -7,23 +6,9 @@ const {
WhereMixin
WhereMixin
}
=
require
(
'
../mixins
'
);
}
=
require
(
'
../mixins
'
);
/**
class
Select
extends
WhereMixin
(
* Class for execution of SELECT queries
OffsetMixin
(
LimitMixin
(
ColumnsMixin
(
SpecificQuery
)))
*
)
{
* @class Select
*/
class
Select
extends
WhereMixin
(
OffsetMixin
(
LimitMixin
(
ColumnsMixin
(
Query
))))
{
/**
* Creates an instance of Select.
*
* @param {Pool} db
* @param {string} table
*/
constructor
(
db
,
table
)
{
super
(
db
);
this
.
table
=
table
;
}
get
canExecute
()
{
get
canExecute
()
{
return
this
.
_columns
!=
null
;
return
this
.
_columns
!=
null
;
}
}
...
...
src/database.class.js
0 → 100644
View file @
ba403bc0
const
{
Pool
}
=
require
(
'
pg
'
);
const
GenericQuery
=
require
(
'
./classes/query.specific.class
'
);
const
Select
=
require
(
'
./classes/select.class
'
);
const
Insert
=
require
(
'
./classes/insert.class
'
);
const
Delete
=
require
(
'
./classes/delete.class
'
);
/**
* Class for communication with PostgreSQL database
*
* @class Database
*/
class
Database
{
/**
*
* @param {Object} params
* @param {String} params.host - Connection Host
* @param {number} params.port - Connection Port
* @param {String} params.database - DB Name
* @param {String} params.user - DB User
* @param {String} params.password - DB Password
*/
constructor
({
host
,
port
,
database
,
user
,
password
})
{
this
.
_db
=
new
Pool
({
host
,
port
,
database
,
user
,
password
});
}
/**
* Creates a Query object
*
* @param {String} query
* @param {Array.<any>} data
* @returns {Query} query
*/
query
(
query
,
data
=
[])
{
return
new
GenericQuery
(
this
,
query
,
data
);
}
/**
* Creates a Select object
*
* @param {String} table
* @returns {Select} select
*/
select
(
table
)
{
return
new
Select
(
this
,
table
);
}
/**
* Creates an Insert object
*
* @param {String} table
* @returns {Insert} insert
*/
insert
(
table
)
{
return
new
Insert
(
this
,
table
);
}
/**
* Creates a Delete object
*
* @param {String} table
* @returns {Delete} delete
*/
delete
(
table
)
{
return
new
Delete
(
this
,
table
);
}
}
module
.
exports
=
Database
;
mixins/columns.mixin.js
→
src/
mixins/columns.mixin.js
View file @
ba403bc0
File moved
mixins/index.js
→
src/
mixins/index.js
View file @
ba403bc0
File moved
mixins/limit.mixin.js
→
src/
mixins/limit.mixin.js
View file @
ba403bc0
File moved
mixins/offset.mixin.js
→
src/
mixins/offset.mixin.js
View file @
ba403bc0
File moved
mixins/values.mixin.js
→
src/
mixins/values.mixin.js
View file @
ba403bc0
File moved
mixins/where.mixin.js
→
src/
mixins/where.mixin.js
View file @
ba403bc0
File moved
utils/case.js
→
src/
utils/case.js
View file @
ba403bc0
File moved
utils/types.js
→
src/
utils/types.js
View file @
ba403bc0
File moved
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment