drizzle-orm 0.11.2 → 0.11.5
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/README.md +210 -298
- package/builders/aggregators/abstractAggregator.js.map +1 -1
- package/builders/aggregators/deleteAggregator.js.map +1 -1
- package/builders/aggregators/insertAggregator.js.map +1 -1
- package/builders/aggregators/selectAggregator.js.map +1 -1
- package/builders/aggregators/selectAggregatorV1.js.map +1 -1
- package/builders/aggregators/updateAggregator.js.map +1 -1
- package/builders/highLvlBuilders/abstractRequestBuilder.js.map +1 -1
- package/builders/highLvlBuilders/deleteRequestBuilder.js.map +1 -1
- package/builders/highLvlBuilders/insertRequestBuilder.js.map +1 -1
- package/builders/highLvlBuilders/joins/joinBuilderResponse.js.map +1 -1
- package/builders/highLvlBuilders/joins/proxies/joinProxies.js.map +1 -1
- package/builders/highLvlBuilders/joins/selectJoinBuilder.js.map +1 -1
- package/builders/highLvlBuilders/order.js.map +1 -1
- package/builders/highLvlBuilders/selectRequestBuilder.js.map +1 -1
- package/builders/highLvlBuilders/updateRequestBuilder.js.map +1 -1
- package/builders/index.js.map +1 -1
- package/builders/joinBuilders/builders/abstractJoinBuilder.js.map +1 -1
- package/builders/joinBuilders/builders/selectWithFiveJoins.js.map +1 -1
- package/builders/joinBuilders/builders/selectWithFourJoins.js.map +1 -1
- package/builders/joinBuilders/builders/selectWithJoin.js.map +1 -1
- package/builders/joinBuilders/builders/selectWithThreeJoins.d.ts +1 -1
- package/builders/joinBuilders/builders/selectWithThreeJoins.js.map +1 -1
- package/builders/joinBuilders/builders/selectWithTwoJoins.d.ts +1 -1
- package/builders/joinBuilders/builders/selectWithTwoJoins.js.map +1 -1
- package/builders/joinBuilders/join.js.map +1 -1
- package/builders/joinBuilders/joinWith.js.map +1 -1
- package/builders/joinBuilders/responses/selectResponseFiveJoins.js.map +1 -1
- package/builders/joinBuilders/responses/selectResponseFourJoins.js.map +1 -1
- package/builders/joinBuilders/responses/selectResponseThreeJoins.js.map +1 -1
- package/builders/joinBuilders/responses/selectResponseTwoJoins.js.map +1 -1
- package/builders/joinBuilders/responses/selectResponseWithJoin.js.map +1 -1
- package/builders/joinBuilders/static.js.map +1 -1
- package/builders/lowLvlBuilders/alter.js.map +1 -1
- package/builders/lowLvlBuilders/create.js.map +1 -1
- package/builders/lowLvlBuilders/delets/delete.js.map +1 -1
- package/builders/lowLvlBuilders/delets/deleteFilter.js.map +1 -1
- package/builders/lowLvlBuilders/delets/deleteFrom.js.map +1 -1
- package/builders/lowLvlBuilders/inserts/insert.js.map +1 -1
- package/builders/lowLvlBuilders/inserts/insertInto.js.map +1 -1
- package/builders/lowLvlBuilders/inserts/onConflictInsert.js.map +1 -1
- package/builders/lowLvlBuilders/inserts/valuesInsert.js.map +1 -1
- package/builders/lowLvlBuilders/selects/select.js.map +1 -1
- package/builders/lowLvlBuilders/selects/selectFrom.js.map +1 -1
- package/builders/lowLvlBuilders/selects/selectJoined.js.map +1 -1
- package/builders/lowLvlBuilders/selects/whereSelect.js.map +1 -1
- package/builders/lowLvlBuilders/updates/update.js.map +1 -1
- package/builders/lowLvlBuilders/updates/updateIn.js.map +1 -1
- package/builders/lowLvlBuilders/updates/whereSelect.js.map +1 -1
- package/builders/lowLvlBuilders/updates/whereSet.js.map +1 -1
- package/builders/requestBuilders/updates/combine.js.map +1 -1
- package/builders/requestBuilders/updates/increment.js.map +1 -1
- package/builders/requestBuilders/updates/setObjects.js.map +1 -1
- package/builders/requestBuilders/updates/static.js.map +1 -1
- package/builders/requestBuilders/updates/updates.js.map +1 -1
- package/builders/requestBuilders/where/and.js.map +1 -1
- package/builders/requestBuilders/where/const.js.map +1 -1
- package/builders/requestBuilders/where/constArray.js.map +1 -1
- package/builders/requestBuilders/where/eqWhere.js.map +1 -1
- package/builders/requestBuilders/where/greater.js.map +1 -1
- package/builders/requestBuilders/where/greaterEq.js.map +1 -1
- package/builders/requestBuilders/where/in.js.map +1 -1
- package/builders/requestBuilders/where/isNotNull.js.map +1 -1
- package/builders/requestBuilders/where/isNull.js.map +1 -1
- package/builders/requestBuilders/where/less.js.map +1 -1
- package/builders/requestBuilders/where/lessEq.js.map +1 -1
- package/builders/requestBuilders/where/like.js.map +1 -1
- package/builders/requestBuilders/where/notEqWhere.js.map +1 -1
- package/builders/requestBuilders/where/or.js.map +1 -1
- package/builders/requestBuilders/where/rawWhere.js.map +1 -1
- package/builders/requestBuilders/where/static.js.map +1 -1
- package/builders/requestBuilders/where/var.js.map +1 -1
- package/builders/requestBuilders/where/where.js.map +1 -1
- package/builders/transaction/transaction.js.map +1 -1
- package/columns/column.js.map +1 -1
- package/columns/index.js.map +1 -1
- package/columns/types/columnType.js.map +1 -1
- package/columns/types/pgBigDecimal.js.map +1 -1
- package/columns/types/pgBigInt.js.map +1 -1
- package/columns/types/pgBigSerial.js.map +1 -1
- package/columns/types/pgBoolean.js.map +1 -1
- package/columns/types/pgEnum.js.map +1 -1
- package/columns/types/pgInteger.js.map +1 -1
- package/columns/types/pgJsonb.js.map +1 -1
- package/columns/types/pgSerial.js.map +1 -1
- package/columns/types/pgSmallInt.js.map +1 -1
- package/columns/types/pgText.js.map +1 -1
- package/columns/types/pgTime.js.map +1 -1
- package/columns/types/pgTimestamp.js.map +1 -1
- package/columns/types/pgTimestamptz.js.map +1 -1
- package/columns/types/pgVarChar.js.map +1 -1
- package/db/db.js.map +1 -1
- package/db/dbConnector.js.map +1 -1
- package/db/dbStringConnector.js.map +1 -1
- package/db/group_by.js.map +1 -1
- package/db/index.js.map +1 -1
- package/db/session.js.map +1 -1
- package/docs/cases/simple_delete.js.map +1 -1
- package/docs/cases/simple_insert.js.map +1 -1
- package/docs/cases/simple_join.js.map +1 -1
- package/docs/cases/simple_select.js.map +1 -1
- package/docs/cases/simple_update.js.map +1 -1
- package/docs/tables/citiesTable.js.map +1 -1
- package/docs/tables/userGroupsTable.js.map +1 -1
- package/docs/tables/usersTable.js.map +1 -1
- package/docs/tables/usersToUserGroups.js.map +1 -1
- package/docs/types/rolesType.js.map +1 -1
- package/errors/baseError.js.map +1 -1
- package/errors/builderError.js.map +1 -1
- package/errors/dbErrors.js.map +1 -1
- package/index.d.ts +1 -1
- package/index.js +4 -2
- package/index.js.map +1 -1
- package/indexes/tableIndex.js.map +1 -1
- package/logger/abstractLogger.js.map +1 -1
- package/logger/consoleLogger.js.map +1 -1
- package/mappers/index.js.map +1 -1
- package/mappers/responseMapper.js.map +1 -1
- package/migrator/index.js.map +1 -1
- package/migrator/migrator.js.map +1 -1
- package/package.json +3 -4
- package/serializer/serializer.d.ts +0 -58
- package/serializer/serializer.js +293 -258
- package/serializer/serializer.js.map +1 -1
- package/tables/abstractTable.d.ts +6 -0
- package/tables/abstractTable.js +22 -2
- package/tables/abstractTable.js.map +1 -1
- package/tables/index.js.map +1 -1
- package/tables/inferTypes.d.ts +5 -0
- package/tables/inferTypes.js.map +1 -1
- package/tables/migrationsTable.js.map +1 -1
- package/test.d.ts +1 -0
- package/test.js +191 -176
- package/test.js.map +1 -1
- package/types/type.js.map +1 -1
- package/utils/ecranate.js.map +1 -1
- package/utils/escape.d.ts +2 -0
- package/utils/escape.js +9 -0
- package/utils/escape.js.map +1 -0
- package/builders/requestBuilders/where/static.spec.d.ts +0 -1
- package/builders/requestBuilders/where/static.spec.js +0 -60
- package/builders/requestBuilders/where/static.spec.js.map +0 -1
package/README.md
CHANGED
|
@@ -1,364 +1,276 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
* PostgreSQL
|
|
15
|
-
|
|
16
|
-
## Links
|
|
17
|
-
|
|
18
|
-
In Progress
|
|
19
|
-
|
|
20
|
-
## Installing
|
|
21
|
-
|
|
1
|
+
## DrizzleORM
|
|
2
|
+
DrizzleORM is a TypeScript ORM library with a [drizzle-kit](https://www.npmjs.com/package/drizzle-kit) CLI companion for automatic SQL migrations generation. It's meant to be a library, not a framework, stay as an opt-in solution all the time at any levels. We try to follow SQL-like syntax whenever possible, be strongly typed ground top and fail in compile time, not in runtime. We implemented best in class `joins` and second to none `migrations generation`. Library has almost zero dependencies and being battle tested on production projects by multiple teams 🚀
|
|
3
|
+
|
|
4
|
+
| database | support |
|
|
5
|
+
|:-- | :---: |
|
|
6
|
+
| PostgreSQL | ✅ |
|
|
7
|
+
| MySQL | ⏳ |
|
|
8
|
+
| DynamoDB | ⏳ |
|
|
9
|
+
| SQLite | ⏳ |
|
|
10
|
+
| MS SQL | ⏳ |
|
|
11
|
+
| CockroachDB | ⏳ |
|
|
12
|
+
|
|
13
|
+
### Installation
|
|
22
14
|
```bash
|
|
23
15
|
npm install drizzle-orm drizzle-kit
|
|
24
16
|
```
|
|
25
|
-
#### **In Progress**
|
|
26
|
-
```bash
|
|
27
|
-
yarn add drizzle-orm drizzle-kit
|
|
28
|
-
bower install drizzle-orm drizzle-kit
|
|
29
|
-
```
|
|
30
|
-
|
|
31
|
-
## Connecting to database
|
|
32
|
-
|
|
33
|
-
```tsx
|
|
34
|
-
import { DbConnector } from "drizzle-orm";
|
|
35
|
-
|
|
36
|
-
// connect via postgresql connection url
|
|
37
|
-
const db = await new DbConnector()
|
|
38
|
-
.connectionString("postgres://user:password@host:port/db")
|
|
39
|
-
.connect();
|
|
40
|
-
|
|
41
|
-
// or by params
|
|
42
|
-
const db = await new DbConnector()
|
|
43
|
-
.params({
|
|
44
|
-
host: '0.0.0.0',
|
|
45
|
-
port: 5432,
|
|
46
|
-
user: 'user',
|
|
47
|
-
password: 'password',
|
|
48
|
-
db: 'optional_db_name'
|
|
49
|
-
}).connect();
|
|
50
|
-
```
|
|
51
|
-
## Project structure
|
|
52
|
-
- tables folder
|
|
53
|
-
- migrations folder
|
|
54
17
|
|
|
55
|
-
|
|
56
|
-
### Users Table
|
|
57
|
-
---
|
|
18
|
+
### Quick start
|
|
58
19
|
```typescript
|
|
20
|
+
import { drizzle, PgTable } from 'drizzle-orm'
|
|
59
21
|
|
|
60
|
-
export
|
|
61
|
-
|
|
62
|
-
export default class UsersTable extends AbstractTable<UsersTable> {
|
|
22
|
+
export class UsersTable extends PgTable<UsersTable> {
|
|
63
23
|
public id = this.serial('id').primaryKey();
|
|
64
24
|
public fullName = this.text('full_name');
|
|
65
|
-
|
|
66
25
|
public phone = this.varchar('phone', { size: 256 });
|
|
67
|
-
public media = this.jsonb<string[]>('media');
|
|
68
|
-
public decimalField = this.decimal('test', { precision: 100, scale: 2 }).notNull();
|
|
69
|
-
public bigIntField = this.bigint('test1', 'max_bytes_53');
|
|
70
|
-
public role = this.type(rolesEnum, 'name_in_table').notNull();
|
|
71
|
-
|
|
72
|
-
public createdAt = this.timestamp('created_at').notNull();
|
|
73
|
-
|
|
74
|
-
public createdAtWithTimezone = this.timestamptz('created_at_time_zone');
|
|
75
|
-
|
|
76
|
-
public updatedAt = this.timestamp('updated_at').defaultValue(Defaults.CURRENT_TIMESTAMP);
|
|
77
|
-
public isArchived = this.bool('is_archived').defaultValue(false);
|
|
78
|
-
|
|
79
|
-
public phoneFullNameIndex = this.index([this.phone, this.fullName]);
|
|
80
|
-
public phoneIndex = this.uniqueIndex(this.phone);
|
|
81
26
|
|
|
82
27
|
public tableName(): string {
|
|
83
28
|
return 'users';
|
|
84
29
|
}
|
|
85
30
|
}
|
|
86
|
-
|
|
87
|
-
### Cities Table
|
|
88
|
-
---
|
|
89
|
-
```typescript
|
|
90
|
-
interface CityMeta {
|
|
91
|
-
population: number,
|
|
92
|
-
connection: string,
|
|
93
|
-
}
|
|
31
|
+
export type User = InferType<UsersTable>
|
|
94
32
|
|
|
95
|
-
|
|
96
|
-
|
|
33
|
+
const db = await drizzle.connect("postgres://user:password@host:port/db");
|
|
34
|
+
const usersTable = new UsersTable(db);
|
|
97
35
|
|
|
98
|
-
|
|
99
|
-
|
|
36
|
+
const users: User[] = await usersTable.select().execute();
|
|
37
|
+
```
|
|
100
38
|
|
|
101
|
-
|
|
39
|
+
### Connecting to database
|
|
40
|
+
```typescript
|
|
102
41
|
|
|
103
|
-
|
|
42
|
+
const db = await drizzle.connect("postgres://user:password@host:port/db");
|
|
43
|
+
const db = await drizzle.connect({
|
|
44
|
+
host: "127.0.0.1",
|
|
45
|
+
port: 5432,
|
|
46
|
+
user: "postgres",
|
|
47
|
+
password: "postgres",
|
|
48
|
+
db: "db_name",
|
|
49
|
+
});
|
|
50
|
+
```
|
|
104
51
|
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
52
|
+
### SQL schema declaration
|
|
53
|
+
With `drizzle-orm` you declare SQL schema in typescritp. You can have either one `schema.ts` file with all declarations or you can group them logically in multiple files. We prefer to use single file schema.
|
|
54
|
+
```
|
|
55
|
+
📦project
|
|
56
|
+
├ 📂src
|
|
57
|
+
│ ├ 📂data
|
|
58
|
+
│ │ └ 📜schema.ts
|
|
59
|
+
│ └ ...
|
|
60
|
+
├ ...
|
|
61
|
+
└ 📜package.json
|
|
62
|
+
|
|
63
|
+
## or multiple schema files
|
|
64
|
+
├ 📂data
|
|
65
|
+
├ 📜users.ts
|
|
66
|
+
├ 📜countries.ts
|
|
67
|
+
├ 📜cities.ts
|
|
68
|
+
├ 📜products.ts
|
|
69
|
+
├ 📜clients.ts
|
|
70
|
+
├ 📜enums.ts
|
|
71
|
+
└ 📜etc.ts
|
|
109
72
|
```
|
|
110
|
-
|
|
111
|
-
---
|
|
73
|
+
This is how you declare SQL schema in `schema.ts`. You can declare tables, indexes and constraints, foreign keys and enums. Please pay attention to `export` keyword, they are mandatory if you'll be using drizzle-kit SQL migrations generator.
|
|
112
74
|
```typescript
|
|
113
|
-
|
|
114
|
-
|
|
75
|
+
// declaring enum in database
|
|
76
|
+
export const popularityEnum = createEnum({ alias: 'popularity', values: ['unknown', 'known', 'popular'] });
|
|
115
77
|
|
|
116
|
-
|
|
117
|
-
|
|
78
|
+
export class CountriesTable extends PgTable<CountriesTable> {
|
|
79
|
+
id = this.serial("id").primaryKey();
|
|
80
|
+
name = this.varchar("name", { size: 256 })
|
|
81
|
+
|
|
82
|
+
// declaring index
|
|
83
|
+
nameIndex = this.uniqueIndex(this.name)
|
|
118
84
|
|
|
119
85
|
public tableName(): string {
|
|
120
|
-
return '
|
|
86
|
+
return 'countries';
|
|
121
87
|
}
|
|
122
88
|
}
|
|
123
|
-
```
|
|
124
|
-
### User to User Groups Table
|
|
125
|
-
---
|
|
126
|
-
#### Many to many connection between Users and User Groups
|
|
127
|
-
```typescript
|
|
128
|
-
export default class UsersToUserGroupsTable extends AbstractTable<UsersToUserGroupsTable> {
|
|
129
|
-
public groupId = this.int('city_id').foreignKey(UserGroupsTable, (table) => table.id, { onDelete: 'CASCADE' });
|
|
130
|
-
public userId = this.int('user_id').foreignKey(UsersTable, (table) => table.id, { onDelete: 'CASCADE' });
|
|
131
89
|
|
|
132
|
-
|
|
90
|
+
export class CitiesTable extends PgTable<CitiesTable> {
|
|
91
|
+
id = this.serial("id").primaryKey();
|
|
92
|
+
name = this.varchar("name", { size: 256 })
|
|
93
|
+
countryId = this.int("country_id").foreignKey(CountriesTable, (country) => country.id)
|
|
94
|
+
|
|
95
|
+
// declaring enum column in table
|
|
96
|
+
popularity = this.type(popularityEnum, "popularity")
|
|
133
97
|
|
|
134
98
|
public tableName(): string {
|
|
135
|
-
return '
|
|
99
|
+
return 'cities';
|
|
136
100
|
}
|
|
137
101
|
}
|
|
138
102
|
```
|
|
139
|
-
|
|
140
|
-
## CRUD
|
|
141
|
-
### **SELECT**
|
|
142
|
-
---
|
|
103
|
+
The list of all possible types. You can also create custom types - !!see here!!.
|
|
143
104
|
```typescript
|
|
144
|
-
const
|
|
145
|
-
|
|
146
|
-
.connect();
|
|
105
|
+
export const enum = createEnum({ alias: "database-name", values: ["value1", "value2", "value3"] });
|
|
106
|
+
type(enum, "...")
|
|
147
107
|
|
|
148
|
-
|
|
108
|
+
smallint("...")
|
|
109
|
+
int("...")
|
|
110
|
+
bigint("...", maxBytes: "max_bytes_53")
|
|
111
|
+
bigint("...", maxBytes: "max_bytes_64")
|
|
149
112
|
|
|
150
|
-
|
|
151
|
-
|
|
113
|
+
bool("...")
|
|
114
|
+
text("...");
|
|
115
|
+
varchar("...");
|
|
116
|
+
varchar("...", { size: 256 });
|
|
152
117
|
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
#### **Sorting and Filtering**
|
|
157
|
-
---
|
|
158
|
-
##### Select all records from `Users` where phone is `"hello"`
|
|
159
|
-
```typescript
|
|
160
|
-
const eqSelect = await usersTable.select().where(
|
|
161
|
-
eq(usersTable.phone, 'hello')
|
|
162
|
-
).all();
|
|
163
|
-
```
|
|
164
|
-
##### Select all records from `Users` where **both** phone is `"hello"` **and** phone is `"hello"`
|
|
165
|
-
```typescript
|
|
166
|
-
const andSelect = await usersTable.select().where(
|
|
167
|
-
and([
|
|
168
|
-
eq(usersTable.phone, 'hello'),
|
|
169
|
-
eq(usersTable.phone, 'hello')
|
|
170
|
-
]),
|
|
171
|
-
).all();
|
|
172
|
-
```
|
|
173
|
-
##### Select all records from `Users` where **either** phone is `"hello"` **or** phone is `"hello"`
|
|
174
|
-
```typescript
|
|
175
|
-
const orSelect = await usersTable.select().where(
|
|
176
|
-
or([eq(usersTable.phone, 'hello')]),
|
|
177
|
-
).all();
|
|
178
|
-
```
|
|
179
|
-
##### Select all records from `Users` using **LIMIT** and **OFFSET**
|
|
180
|
-
```typescript
|
|
181
|
-
const limitOffsetSelect = await usersTable.select().limit(10).offset(10).all();
|
|
182
|
-
```
|
|
183
|
-
##### Select all records from `Users` where `phone` contains `"hello"`
|
|
184
|
-
```typescript
|
|
185
|
-
const likeSelect = await usersTable.select().where(
|
|
186
|
-
like(usersTable.phone, '%hello%')
|
|
187
|
-
).all();
|
|
188
|
-
```
|
|
189
|
-
##### Select all records from `Users` where `phone` equals to some of values from array
|
|
190
|
-
```typescript
|
|
191
|
-
const inArraySelect = usersTable.select().where(
|
|
192
|
-
inArray(usersTable.phone, ['hello'])
|
|
193
|
-
).all();
|
|
194
|
-
```
|
|
195
|
-
##### Select all records from `Users` where `phone` greater(**>**) than `"hello"`
|
|
196
|
-
```typescript
|
|
197
|
-
const greaterSelect = usersTable.select().where(
|
|
198
|
-
greater(usersTable.phone, 'hello')
|
|
199
|
-
).all();
|
|
200
|
-
```
|
|
201
|
-
##### Select all records from `Users` where `phone` less(**<**) than `"hello"`
|
|
202
|
-
```typescript
|
|
203
|
-
const lessSelect = usersTable.select().where(
|
|
204
|
-
less(usersTable.phone, 'hello')
|
|
205
|
-
).all();
|
|
206
|
-
```
|
|
207
|
-
##### Select all records from `Users` where `phone` greater or equals(**>=**) than `"hello"`
|
|
208
|
-
```typescript
|
|
209
|
-
const greaterEqSelect = usersTable.select().where(
|
|
210
|
-
greaterEq(usersTable.phone, 'hello')
|
|
211
|
-
).all();
|
|
212
|
-
```
|
|
213
|
-
##### Select all records from `Users` where `phone` less or equals(**<=**)
|
|
214
|
-
```typescript
|
|
215
|
-
const lessEqSelect = usersTable.select().where(
|
|
216
|
-
lessEq(usersTable.phone, 'hello')
|
|
217
|
-
).all();
|
|
218
|
-
```
|
|
219
|
-
##### Select all records from `Users` where `phone` is **NULL**
|
|
220
|
-
```typescript
|
|
221
|
-
const isNullSelect = usersTable.select().where(
|
|
222
|
-
isNull(usersTable.phone)
|
|
223
|
-
).all();
|
|
224
|
-
```
|
|
225
|
-
##### Select all records from `Users` where `phone` not equals to `"hello"`
|
|
226
|
-
```typescript
|
|
227
|
-
const notEqSelect = usersTable.select().where(
|
|
228
|
-
notEq(usersTable.phone, 'hello')
|
|
229
|
-
).all();
|
|
230
|
-
```
|
|
231
|
-
##### Select all records from `Users` ordered by `phone` in ascending order
|
|
232
|
-
```typescript
|
|
233
|
-
const ordered = await usersTable.select().orderBy((table) => table.phone, Order.ASC).all();
|
|
234
|
-
```
|
|
235
|
-
#### **Partial Selecting**
|
|
236
|
-
```typescript
|
|
237
|
-
const partialSelect = await usersTable.select({
|
|
238
|
-
mappedId: usersTable.id,
|
|
239
|
-
mappedPhone: usersTable.phone,
|
|
240
|
-
}).all();
|
|
118
|
+
serial("...");
|
|
119
|
+
bigserial("...", maxBytes: "max_bytes_53");
|
|
120
|
+
bigserial("...", maxBytes: "max_bytes_64");
|
|
241
121
|
|
|
242
|
-
|
|
243
|
-
const { mappedId, mappedPhone } = partialSelect;
|
|
244
|
-
```
|
|
122
|
+
decimal("...", { precision: 100, scale: 2 });
|
|
245
123
|
|
|
124
|
+
jsonb<...>("...");
|
|
125
|
+
jsonb<string[]>("...");
|
|
246
126
|
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
await usersTable.update()
|
|
252
|
-
.where(eq(usersTable.phone, 'hello'))
|
|
253
|
-
.set({ fullName: 'newName' })
|
|
254
|
-
.execute();
|
|
255
|
-
```
|
|
256
|
-
##### Update `fullName` to `newName` in `Users` where phone is `"hello"` returning updated `User` model
|
|
257
|
-
```typescript
|
|
258
|
-
await usersTable.update()
|
|
259
|
-
.where(eq(usersTable.phone, 'hello'))
|
|
260
|
-
.set({ fullName: 'newName' })
|
|
261
|
-
.all();
|
|
262
|
-
```
|
|
263
|
-
##### Update `fullName` to `newName` in `Users` where phone is `"hello"` returning updated `User` model
|
|
264
|
-
```typescript
|
|
265
|
-
await usersTable.update()
|
|
266
|
-
.where(eq(usersTable.phone, 'hello'))
|
|
267
|
-
.set({ fullName: 'newName' })
|
|
268
|
-
.findOne();
|
|
269
|
-
```
|
|
127
|
+
time("...")
|
|
128
|
+
timestamp("...") // with timezone
|
|
129
|
+
timestamptz("..."); // without timezone
|
|
130
|
+
timestamp("...").defaultValue(Defaults.CURRENT_TIMESTAMP)
|
|
270
131
|
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
```
|
|
284
|
-
##### Delete `user` where phone is `"hello"` returning updated `User` model
|
|
285
|
-
```typescript
|
|
286
|
-
await usersTable.delete()
|
|
287
|
-
.where(eq(usersTable.phone, 'hello'))
|
|
288
|
-
.findOne();
|
|
132
|
+
index(column);
|
|
133
|
+
index([column1, column2, ...]);
|
|
134
|
+
uniqueIndex(column);
|
|
135
|
+
uniqueIndex([column1, column2, ...]);
|
|
136
|
+
|
|
137
|
+
|
|
138
|
+
column.primaryKey()
|
|
139
|
+
column.notNull()
|
|
140
|
+
column.defaultValue(...)
|
|
141
|
+
|
|
142
|
+
// 'CASCADE' | 'RESTRICT' | 'SET NULL' | 'SET DEFAULT'
|
|
143
|
+
column.foreignKey(Table, (table) => table.column, { onDelete: "CASCADE", onUpdate: "CASCADE" });
|
|
289
144
|
```
|
|
290
145
|
|
|
291
|
-
###
|
|
292
|
-
|
|
146
|
+
### Create Read Update Delete
|
|
147
|
+
Querying, sorting and filtering. We also support partial select.
|
|
293
148
|
```typescript
|
|
294
|
-
await
|
|
295
|
-
|
|
149
|
+
const db = await drizzle.connect("...")
|
|
150
|
+
const table = new UsersTable(db);
|
|
151
|
+
|
|
152
|
+
const result: User[] = await table.select().execute();
|
|
153
|
+
await table.select().where(
|
|
154
|
+
eq(table.id, 42)
|
|
155
|
+
).execute();
|
|
156
|
+
|
|
157
|
+
// you can combine filters with eq(...) or or(...)
|
|
158
|
+
await table.select().where(
|
|
159
|
+
and([eq(table.id, 42), eq(table.name, "Dan")])
|
|
160
|
+
).execute();
|
|
161
|
+
|
|
162
|
+
await table.select().where(
|
|
163
|
+
or([eq(table.id, 42), eq(table.id, 1)])
|
|
164
|
+
).execute();
|
|
165
|
+
|
|
166
|
+
// partial select
|
|
167
|
+
const result = await table.select({
|
|
168
|
+
mapped1: table.id,
|
|
169
|
+
mapped2: table.name,
|
|
170
|
+
}).execute();
|
|
171
|
+
const { mapped1, mapped2 } = result[0];
|
|
172
|
+
|
|
173
|
+
// limit offset & order by
|
|
174
|
+
await table.select().limit(10).offset(10).execute()
|
|
175
|
+
await table.select().orderBy((table) => table.name, Order.ASC)
|
|
176
|
+
await table.select().orderBy((table) => table.name, Order.DESC)
|
|
177
|
+
|
|
178
|
+
// list of all filter operators
|
|
179
|
+
eq(table.column, value)
|
|
180
|
+
notEq(table.column, value)
|
|
181
|
+
less(table.column, value)
|
|
182
|
+
lessEq(table.column, value)
|
|
183
|
+
greater(table.column, value)
|
|
184
|
+
greaterEq(table.column, value)
|
|
185
|
+
isNull(table.column)
|
|
186
|
+
isNotNull(table.column)
|
|
187
|
+
|
|
188
|
+
inArray(table.column, [...values])
|
|
189
|
+
like(table.column, value)
|
|
190
|
+
raw("raw sql filter")
|
|
191
|
+
|
|
192
|
+
and(exressions: Expr[])
|
|
193
|
+
or(exressions: Expr[])
|
|
194
|
+
```
|
|
195
|
+
Inserting
|
|
196
|
+
```typescript
|
|
197
|
+
const result = await usersTable.insert({
|
|
198
|
+
name: "Andrew",
|
|
296
199
|
createdAt: new Date(),
|
|
297
200
|
}).execute();
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
const user = await usersTable.insert({
|
|
302
|
-
test: 1,
|
|
201
|
+
|
|
202
|
+
const result = await usersTable.insertMany([{
|
|
203
|
+
name: "Andrew",
|
|
303
204
|
createdAt: new Date(),
|
|
304
|
-
}
|
|
305
|
-
|
|
306
|
-
##### Insert `user` with required fields and get inserted entity
|
|
307
|
-
```typescript
|
|
308
|
-
const user = await usersTable.insert({
|
|
309
|
-
test: 1,
|
|
205
|
+
}, {
|
|
206
|
+
name: "Dan",
|
|
310
207
|
createdAt: new Date(),
|
|
311
|
-
}).
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
createdAt: new Date(),
|
|
321
|
-
}]).all();
|
|
208
|
+
}]).execute();
|
|
209
|
+
|
|
210
|
+
//await usersTable.insert({
|
|
211
|
+
// name: "Dan"
|
|
212
|
+
//})
|
|
213
|
+
//.onConflict(
|
|
214
|
+
// (table) => table.name,
|
|
215
|
+
// { name: 'name value to be upserted' }
|
|
216
|
+
//).execute();
|
|
322
217
|
```
|
|
323
|
-
|
|
218
|
+
|
|
219
|
+
Update and Delete
|
|
324
220
|
```typescript
|
|
325
|
-
await usersTable.
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
(table) => table.phoneIndex,
|
|
334
|
-
{ phone: 'confilctUpdate' },
|
|
335
|
-
).all();
|
|
221
|
+
await usersTable.update()
|
|
222
|
+
.where(eq(usersTable.name, 'Dan'))
|
|
223
|
+
.set({ name: 'Mr. Dan' })
|
|
224
|
+
.execute();
|
|
225
|
+
|
|
226
|
+
await usersTable.delete()
|
|
227
|
+
.where(eq(usersTable.name, 'Dan'))
|
|
228
|
+
.execute();
|
|
336
229
|
```
|
|
337
230
|
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
231
|
+
### Joins
|
|
232
|
+
Last but not least. Probably the most powerful feature in the library🚀
|
|
233
|
+
Many-to-one
|
|
341
234
|
```typescript
|
|
342
235
|
const usersTable = new UsersTable(db);
|
|
343
236
|
const citiesTable = new CitiesTable(db);
|
|
344
237
|
|
|
345
|
-
const
|
|
238
|
+
const result = await citiesTable.select()
|
|
346
239
|
.leftJoin(usersTable, (cities, users) => eq(cities.userId, users.id))
|
|
347
240
|
.where((cities, users) => eq(cities.id, 1))
|
|
348
241
|
.execute();
|
|
349
242
|
|
|
350
|
-
const
|
|
243
|
+
const citiesWithUsers: { city: City, user: User }[] = result.map((city, user) => ({ city, user }));
|
|
351
244
|
```
|
|
352
|
-
|
|
353
|
-
### Join Many-To-Many Tables
|
|
354
|
-
##### Join User Groups with Users, using many-to-many table
|
|
245
|
+
Many-to-many
|
|
355
246
|
```typescript
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
247
|
+
export class UsersTable extends PgTable<UsersTable> {
|
|
248
|
+
id = this.serial("id").primaryKey();
|
|
249
|
+
name = this.varchar("name");
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
export class ChatGroupsTable extends PgTable<ChatGroupsTable> {
|
|
253
|
+
id = this.serial("id").primaryKey();
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
export class ManyToManyTable extends PgTable<ManyToManyTable> {
|
|
257
|
+
userId = this.int('user_id').foreignKey(UsersTable, (table) => table.id, { onDelete: 'CASCADE' });
|
|
258
|
+
groupId = this.int('group_id').foreignKey(ChatGroupsTable, (table) => table.id, { onDelete: 'CASCADE' });
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
...
|
|
262
|
+
const usersTable = new UsersTable(db);
|
|
263
|
+
const chatGroupsTable = new ChatGroupsTable(db);
|
|
264
|
+
const manyToManyTable = new ManyToManyTable(db);
|
|
265
|
+
|
|
266
|
+
// querying user group with id 1 and all the participants(users)
|
|
267
|
+
const usersWithUserGroups = await manyToManyTable.select()
|
|
268
|
+
.leftJoin(usersTable, (manyToMany, users) => eq(manyToManyTable.userId, users.id))
|
|
269
|
+
.leftJoin(chatGroupsTable, (manyToMany, _users, chatGroups) => eq(manyToManyTable.groupId, chatGroups.id))
|
|
270
|
+
.where((manyToMany, _users, userGroups) => eq(userGroups.id, 1))
|
|
360
271
|
.execute();
|
|
361
272
|
```
|
|
273
|
+
|
|
362
274
|
### Join using partial field select
|
|
363
275
|
##### Join Cities with Users getting only needed fields form request
|
|
364
276
|
```typescript
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"abstractAggregator.js","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"abstractAggregator.js","sourceRoot":"","sources":["../../../src/builders/aggregators/abstractAggregator.ts"],"names":[],"mappings":";;AAAA,4BAA4B;AAC5B,iDAA8D;AAG9D,mDAAgD;AAEhD,mCAAmC;AACnC,MAAqB,UAAU;IAI7B,YAAmB,KAAyB,EAAE,OAAmG;QAHvI,YAAO,GAAkB,EAAE,CAAC;QAc5B,wBAAmB,GAAG,CAAC,KAAa,EAAE,OAAqC,EAAE,EAAW,EAAE,EAAE;YACpG,MAAM,YAAY,GAAa,EAAE,CAAC;YAElC,OAAO,CAAC,OAAO,CAAC,CAAC,KAAU,EAAE,EAAE;gBAC7B,IAAI,KAAK,YAAY,eAAM,EAAE;oBAC3B,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBACvB,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBACzB,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBACvB,YAAY,CAAC,IAAI,CAAC,mBAAQ,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;oBACnD,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBAC1B,YAAY,CAAC,IAAI,CAAC,mBAAQ,CAAC,GAAG,KAAK,IAAI,KAAK,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC,CAAC;oBACjE,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;iBACxB;YACH,CAAC,CAAC,CAAC;YAEH,YAAY,CAAC,GAAG,EAAE,CAAC;YACnB,OAAO,YAAY,CAAC;QACtB,CAAC,CAAC;QAEQ,0BAAqB,GAAG,CAAC,KAAa,EAAE,OAAqC,EAAE,EAAW,EAAE,EAAE;YACtG,MAAM,YAAY,GAAa,EAAE,CAAC;YAElC,OAAO,CAAC,OAAO,CAAC,CAAC,KAAU,EAAE,EAAE;gBAC7B,IAAI,KAAK,YAAY,eAAM,EAAE;oBAC3B,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBACvB,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBACzB,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBACvB,YAAY,CAAC,IAAI,CAAC,mBAAQ,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;oBACnD,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBAC1B,YAAY,CAAC,IAAI,CAAC,mBAAQ,CAAC,GAAG,KAAK,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;oBACxE,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;iBACxB;YACH,CAAC,CAAC,CAAC;YAEH,YAAY,CAAC,GAAG,EAAE,CAAC;YACnB,OAAO,YAAY,CAAC;QACtB,CAAC,CAAC;QA9CA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,OAAO,EAAE;YACZ,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,EAC7D,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;SAChD;aAAM;YACL,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,EAC7D,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;SAC3B;IACH,CAAC;CAuCF;AApDD,6BAoDC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deleteAggregator.js","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"deleteAggregator.js","sourceRoot":"","sources":["../../../src/builders/aggregators/deleteAggregator.ts"],"names":[],"mappings":";;;;;AAEA,8EAA8C;AAE9C,MAAqB,gBAAiB,SAAQ,4BAAU;IAMtD,YAAmB,KAAyB;QAC1C,KAAK,CAAC,KAAK,CAAC,CAAC;QANP,UAAK,GAAkB,EAAE,CAAC;QAC1B,aAAQ,GAAkB,EAAE,CAAC;QAC7B,YAAO,GAAe,EAAE,CAAC;QACzB,YAAO,GAAkB,CAAC,QAAQ,CAAC,CAAC;QAMrC,YAAO,GAAG,CAAC,OAAa,EAAoB,EAAE;YACnD,IAAI,OAAO,EAAE;gBACX,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;gBAC3E,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAC7B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;gBACtC,IAAI,CAAC,OAAO,GAAG,WAAW,CAAC,MAAM,CAAC;aACnC;YACD,OAAO,IAAI,CAAC;QACd,CAAC,CAAC;QAEK,eAAU,GAAG,CAAC,SAAiB,EAAoB,EAAE;YAC1D,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC1B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC3B,OAAO,IAAI,CAAC;QACd,CAAC,CAAC;QAEK,eAAU,GAAG,GAA0C,EAAE;YAC9D,4CAA4C;YAC5C,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACxB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;YACvC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACxB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;YAC1C,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACxB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAC/B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACxB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;YAEzC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;QAChE,CAAC,CAAC;IA9BF,CAAC;CA+BF;AAvCD,mCAuCC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"insertAggregator.js","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"insertAggregator.js","sourceRoot":"","sources":["../../../src/builders/aggregators/insertAggregator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"selectAggregator.js","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"selectAggregator.js","sourceRoot":"","sources":["../../../src/builders/aggregators/selectAggregator.ts"],"names":[],"mappings":"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"}
|