Skip to content

Commit 8d2290d

Browse files
Merge pull request #865 from lukashroch/sequelize6-docs
README update for sequelize v6
2 parents 71d55cd + 2a183c5 commit 8d2290d

File tree

1 file changed

+72
-3
lines changed

1 file changed

+72
-3
lines changed

README.md

Lines changed: 72 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,10 @@
44
[![Dependency Status](https://img.shields.io/david/RobinBuschmann/sequelize-typescript.svg)](https://www.npmjs.com/package/sequelize-typescript)
55

66
# sequelize-typescript
7-
Decorators and some other features for sequelize (v5).
7+
Decorators and some other features for sequelize (v6).
88

99
- [Installation](#installation)
10+
- [Upgrade to `sequelize-typescript@2`](#upgrade-to-sequelize-typescript2)
1011
- [Upgrade to `sequelize-typescript@1`](#upgrade-to-sequelize-typescript1)
1112
- [Model Definition](#model-definition)
1213
- [`@Table` API](#table-api)
@@ -37,29 +38,97 @@ Decorators and some other features for sequelize (v5).
3738
- [Recommendations and limitations](#recommendations-and-limitations)
3839

3940
## Installation
40-
*sequelize-typescript* requires [sequelize](https://github.com/sequelize/sequelize), additional typings as documented [here](https://docs.sequelizejs.com/manual/typescript.html) and [reflect-metadata](https://www.npmjs.com/package/reflect-metadata)
41+
42+
- this assumes usage of `sequelize@6`
43+
- *sequelize-typescript* requires [sequelize](https://github.com/sequelize/sequelize)
44+
- additional typings as documented [here](https://sequelize.org/master/manual/typescript.html) and [reflect-metadata](https://www.npmjs.com/package/reflect-metadata)
45+
4146
```
4247
npm install sequelize
43-
npm install @types/bluebird @types/node @types/validator
48+
npm install @types/node @types/validator
4449
npm install reflect-metadata
4550
```
51+
4652
```
4753
npm install sequelize-typescript
4854
```
55+
4956
Your `tsconfig.json` needs the following flags:
57+
5058
```json
5159
"target": "es6", // or a more recent ecmascript version
5260
"experimentalDecorators": true,
5361
"emitDecoratorMetadata": true
5462
```
5563

64+
### ⚠️ sequelize@5
65+
`sequelize@5` requires `sequelize-typescript@1`. See
66+
[documentation](https://github.com/RobinBuschmann/sequelize-typescript/tree/1.0.0) for version `1.0`.
67+
```
68+
npm install [email protected]
69+
```
70+
5671
### ⚠️ sequelize@4
5772
`sequelize@4` requires `[email protected]`. See
5873
[documentation](https://github.com/RobinBuschmann/sequelize-typescript/tree/0.6.X) for version `0.6`.
5974
```
6075
npm install [email protected]
6176
```
6277

78+
## Upgrade to `sequelize-typescript@2`
79+
80+
- `sequelize-typescript@2` only works with `[email protected]>=`.
81+
For `sequelize@5` use `[email protected]`.
82+
83+
### Breaking Changes
84+
85+
- All breaking changes of `sequelize@6` are also valid for `sequelize-typescript@2`.
86+
See [Upgrade to v6](https://sequelize.org/master/manual/upgrade-to-v6.html) for details.
87+
- `@types/bluebird` is no longer needed, `sequelize@6` removed usage of `bluebird`
88+
- Sequelize v6.2 introduced additional model attributes typings, which affects how the model is defined.
89+
- See below comparison between V5 and V6 model definition to show how to upgrade models.
90+
- For more details, see [sequelize typescript docs](https://sequelize.org/master/manual/typescript.html).
91+
92+
#### V5 Model definition
93+
94+
```typescript
95+
import { Table, Model } from 'sequelize-typescript';
96+
97+
@Table
98+
class Person extends Model<Person> {}
99+
```
100+
101+
#### V6 Model definition (less strict)
102+
103+
```typescript
104+
import { Table, Model } from 'sequelize-typescript';
105+
106+
@Table
107+
class Person extends Model {}
108+
```
109+
110+
#### V6 Model definition (more strict)
111+
112+
- ⚠️ not yet implemented in `sequelize-typescript`
113+
- to allow more strict model attributes type-checks, you can define `ModelAttributes` and `ModelCreationAttributes` interfaces
114+
115+
116+
```typescript
117+
import { Optional } from 'sequelize';
118+
import { Table, Model } from 'sequelize-typescript';
119+
120+
interface PersonAttributes {
121+
id: number;
122+
name: string;
123+
}
124+
125+
interface PersonCreationAttributes extends Optional<PersonAttributes, 'id'> {
126+
}
127+
128+
@Table
129+
class Person extends Model<PersonAttributes, PersonCreationAttributes> {}
130+
```
131+
63132
## Upgrade to `sequelize-typescript@1`
64133
`sequelize-typescript@1` only works with `sequelize@5>=`.
65134
For `sequelize@4` & `sequelize@3` use `[email protected]`.

0 commit comments

Comments
 (0)