uranio 0.1.72 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.uranio/dist/atom/mysql.js +1 -1
- package/.uranio/dist/atom/mysql.js.map +1 -1
- package/.uranio/dist/client/mysql.d.ts +2 -0
- package/.uranio/dist/client/mysql.js +3 -0
- package/.uranio/dist/client/mysql.js.map +1 -1
- package/.uranio/package.json +1 -1
- package/.uranio/src/client/mysql.ts +5 -0
- package/README.md +85 -3
- package/package.json +21 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mysql.js","sourceRoot":"","sources":["../../src/atom/mysql.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIH,kDAAoC;AAMpC,MAAa,eAAe;IAE1B,YACS,MAAmB,EACnB,IAAY;QADZ,WAAM,GAAN,MAAM,CAAa;QACnB,SAAI,GAAJ,IAAI,CAAQ;IAClB,CAAC;IAEG,KAAK,CAAC,QAAQ,CAAC,KAA2B;QAC/C,MAAM,EAAC,KAAK,EAAE,GAAG,EAAC,GAAG,GAAG,CAAC,KAAK,CAAC,cAAc,CAAC;YAC5C,KAAK,EAAE,IAAI,CAAC,IAAI;YAChB,KAAK;YACL,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"mysql.js","sourceRoot":"","sources":["../../src/atom/mysql.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,11 +9,13 @@ import mysql from 'mysql2/promise';
|
|
|
9
9
|
export type MySQLClientParams = {
|
|
10
10
|
uri: string;
|
|
11
11
|
use_pool?: boolean;
|
|
12
|
+
timezone?: string;
|
|
12
13
|
};
|
|
13
14
|
export declare class MySQLClient {
|
|
14
15
|
pool?: mysql.Pool;
|
|
15
16
|
main_connection: mysql.Connection | undefined;
|
|
16
17
|
protected uri: string;
|
|
18
|
+
protected timezone: string;
|
|
17
19
|
constructor(params: MySQLClientParams);
|
|
18
20
|
exe(sql: string, values?: any): Promise<any[]>;
|
|
19
21
|
connect(): Promise<void>;
|
|
@@ -16,10 +16,12 @@ const index_1 = require("../log/index");
|
|
|
16
16
|
class MySQLClient {
|
|
17
17
|
constructor(params) {
|
|
18
18
|
this.uri = params.uri;
|
|
19
|
+
this.timezone = params.timezone || '+00:00';
|
|
19
20
|
if (params.use_pool === true) {
|
|
20
21
|
this.pool = promise_1.default.createPool({
|
|
21
22
|
uri: params.uri,
|
|
22
23
|
namedPlaceholders: true,
|
|
24
|
+
timezone: this.timezone,
|
|
23
25
|
});
|
|
24
26
|
}
|
|
25
27
|
}
|
|
@@ -44,6 +46,7 @@ class MySQLClient {
|
|
|
44
46
|
this.main_connection = await promise_1.default.createConnection({
|
|
45
47
|
uri: this.uri,
|
|
46
48
|
namedPlaceholders: true,
|
|
49
|
+
timezone: this.timezone,
|
|
47
50
|
});
|
|
48
51
|
index_1.log.debug(`Connected to MySQL database`);
|
|
49
52
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mysql.js","sourceRoot":"","sources":["../../src/client/mysql.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;;;;AAEH,6DAAmC;AACnC,wCAAiC;
|
|
1
|
+
{"version":3,"file":"mysql.js","sourceRoot":"","sources":["../../src/client/mysql.ts"],"names":[],"mappings":"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"}
|
package/.uranio/package.json
CHANGED
|
@@ -12,18 +12,22 @@ import {log} from '../log/index';
|
|
|
12
12
|
export type MySQLClientParams = {
|
|
13
13
|
uri: string;
|
|
14
14
|
use_pool?: boolean;
|
|
15
|
+
timezone?: string;
|
|
15
16
|
};
|
|
16
17
|
|
|
17
18
|
export class MySQLClient {
|
|
18
19
|
public pool?: mysql.Pool;
|
|
19
20
|
public main_connection: mysql.Connection | undefined;
|
|
20
21
|
protected uri: string;
|
|
22
|
+
protected timezone: string;
|
|
21
23
|
constructor(params: MySQLClientParams) {
|
|
22
24
|
this.uri = params.uri;
|
|
25
|
+
this.timezone = params.timezone || '+00:00';
|
|
23
26
|
if (params.use_pool === true) {
|
|
24
27
|
this.pool = mysql.createPool({
|
|
25
28
|
uri: params.uri,
|
|
26
29
|
namedPlaceholders: true,
|
|
30
|
+
timezone: this.timezone,
|
|
27
31
|
});
|
|
28
32
|
}
|
|
29
33
|
}
|
|
@@ -49,6 +53,7 @@ export class MySQLClient {
|
|
|
49
53
|
this.main_connection = await mysql.createConnection({
|
|
50
54
|
uri: this.uri,
|
|
51
55
|
namedPlaceholders: true,
|
|
56
|
+
timezone: this.timezone,
|
|
52
57
|
});
|
|
53
58
|
log.debug(`Connected to MySQL database`);
|
|
54
59
|
}
|
package/README.md
CHANGED
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|

|
|
4
4
|
|
|
5
|
-
Uranio is the lightest Typescript Object Document Mapper (ODM) for MongoDB
|
|
6
|
-
Object Relational Mapping (ORM) for MySQL.\
|
|
5
|
+
Uranio is the lightest Typescript Object Document Mapper (ODM) for MongoDB,
|
|
6
|
+
Object Relational Mapping (ORM) for MySQL, and DynamoDB.\
|
|
7
7
|
It creates a client for querying collections/tables in a database by just parsing
|
|
8
8
|
the types in a repository.
|
|
9
9
|
|
|
@@ -12,8 +12,21 @@ a Data Access Layer (DAL) from the defined types.
|
|
|
12
12
|
|
|
13
13
|
## Install
|
|
14
14
|
|
|
15
|
+
Uranio uses peer dependencies for database SDKs, so you only install what you need:
|
|
16
|
+
|
|
17
|
+
### For MongoDB users:
|
|
18
|
+
```bash
|
|
19
|
+
npm install uranio mongodb
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
### For MySQL users:
|
|
23
|
+
```bash
|
|
24
|
+
npm install uranio mysql2
|
|
15
25
|
```
|
|
16
|
-
|
|
26
|
+
|
|
27
|
+
### For DynamoDB users:
|
|
28
|
+
```bash
|
|
29
|
+
npm install uranio @aws-sdk/client-dynamodb @aws-sdk/util-dynamodb
|
|
17
30
|
```
|
|
18
31
|
|
|
19
32
|
## How it works
|
|
@@ -85,6 +98,75 @@ interface Product extends uranio.atom {
|
|
|
85
98
|
// }
|
|
86
99
|
```
|
|
87
100
|
|
|
101
|
+
## Configuration
|
|
102
|
+
|
|
103
|
+
### MySQL Client Options
|
|
104
|
+
|
|
105
|
+
When creating a MySQL client, you can configure additional options:
|
|
106
|
+
|
|
107
|
+
```typescript
|
|
108
|
+
import uranio from 'uranio';
|
|
109
|
+
|
|
110
|
+
const uri = process.env.MYSQL_DATABASE_URI || '';
|
|
111
|
+
|
|
112
|
+
// Default: UTC timezone, no connection pool
|
|
113
|
+
const urn = uranio.MySQLClient({ uri });
|
|
114
|
+
|
|
115
|
+
// With connection pool
|
|
116
|
+
const urn = uranio.MySQLClient({
|
|
117
|
+
uri,
|
|
118
|
+
use_pool: true
|
|
119
|
+
});
|
|
120
|
+
|
|
121
|
+
// Custom timezone (default is UTC '+00:00')
|
|
122
|
+
const urn = uranio.MySQLClient({
|
|
123
|
+
uri,
|
|
124
|
+
use_pool: true,
|
|
125
|
+
timezone: '+04:00' // Dubai timezone (GST)
|
|
126
|
+
});
|
|
127
|
+
|
|
128
|
+
// Use local server timezone
|
|
129
|
+
const urn = uranio.MySQLClient({
|
|
130
|
+
uri,
|
|
131
|
+
timezone: 'local'
|
|
132
|
+
});
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
**Timezone Parameter:**
|
|
136
|
+
- **Default**: `'+00:00'` (UTC) - All dates are stored in UTC
|
|
137
|
+
- **Custom**: Any valid timezone offset like `'+04:00'` (Dubai), `'+09:00'` (Tokyo)
|
|
138
|
+
- **Local**: `'local'` - Uses the database server's timezone
|
|
139
|
+
|
|
140
|
+
The timezone setting affects how JavaScript `Date` objects are converted when storing to and retrieving from the database. Using UTC (default) is recommended for consistency across different timezones.
|
|
141
|
+
|
|
142
|
+
## Troubleshooting
|
|
143
|
+
|
|
144
|
+
### Missing Database SDK Error
|
|
145
|
+
|
|
146
|
+
If you get an error like:
|
|
147
|
+
```
|
|
148
|
+
Error: Cannot find module 'mongodb'
|
|
149
|
+
Error: Cannot find module 'mysql2'
|
|
150
|
+
Error: Cannot find module '@aws-sdk/client-dynamodb'
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
This means you haven't installed the required database SDK. Install the SDK for your chosen database:
|
|
154
|
+
|
|
155
|
+
```bash
|
|
156
|
+
# For MongoDB
|
|
157
|
+
npm install mongodb
|
|
158
|
+
|
|
159
|
+
# For MySQL
|
|
160
|
+
npm install mysql2
|
|
161
|
+
|
|
162
|
+
# For DynamoDB
|
|
163
|
+
npm install @aws-sdk/client-dynamodb @aws-sdk/util-dynamodb
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
### Peer Dependency Warnings
|
|
167
|
+
|
|
168
|
+
When installing Uranio, npm may show peer dependency warnings. These are expected since Uranio supports multiple databases. You only need to install the SDK for the database you're actually using.
|
|
169
|
+
|
|
88
170
|
### Credits
|
|
89
171
|
|
|
90
172
|
Logo credits [https://www.jacopotripodi.com/](https://www.jacopotripodi.com/)
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "uranio",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "1.0.0",
|
|
4
4
|
"description": "Uranio is a type-safe ODM for MongoDB",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"repository": {
|
|
@@ -56,15 +56,31 @@
|
|
|
56
56
|
"typescript": "^5.6.3"
|
|
57
57
|
},
|
|
58
58
|
"dependencies": {
|
|
59
|
-
"@aws-sdk/client-dynamodb": "^3.969.0",
|
|
60
|
-
"@aws-sdk/util-dynamodb": "^3.969.0",
|
|
61
59
|
"app-root-path": "^3.1.0",
|
|
62
60
|
"i0n": "^0.9.0",
|
|
63
61
|
"inquirer": "^8.2.6",
|
|
64
|
-
"mongodb": "^7.0.0",
|
|
65
|
-
"mysql2": "^3.16.0",
|
|
66
62
|
"plutonio": "^0.7.2",
|
|
67
63
|
"r4y": "^0.9.0",
|
|
68
64
|
"yaml": "^2.8.2"
|
|
65
|
+
},
|
|
66
|
+
"peerDependencies": {
|
|
67
|
+
"mongodb": ">=7.0.0",
|
|
68
|
+
"mysql2": ">=3.16.0",
|
|
69
|
+
"@aws-sdk/client-dynamodb": ">=3.969.0",
|
|
70
|
+
"@aws-sdk/util-dynamodb": ">=3.969.0"
|
|
71
|
+
},
|
|
72
|
+
"peerDependenciesMeta": {
|
|
73
|
+
"mongodb": {
|
|
74
|
+
"optional": true
|
|
75
|
+
},
|
|
76
|
+
"mysql2": {
|
|
77
|
+
"optional": true
|
|
78
|
+
},
|
|
79
|
+
"@aws-sdk/client-dynamodb": {
|
|
80
|
+
"optional": true
|
|
81
|
+
},
|
|
82
|
+
"@aws-sdk/util-dynamodb": {
|
|
83
|
+
"optional": true
|
|
84
|
+
}
|
|
69
85
|
}
|
|
70
86
|
}
|