Skip to content

Commit 4aceef8

Browse files
author
Mouri P
committed
create issue example
1 parent c8b54c3 commit 4aceef8

File tree

3 files changed

+217
-20
lines changed

3 files changed

+217
-20
lines changed

package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,15 @@
66
"type": "commonjs",
77
"license": "MIT",
88
"dependencies": {
9+
"@sequelize/core": "alpha",
910
"chai": "^4",
1011
"chai-as-promised": "^7",
1112
"chai-datetime": "^1",
1213
"chalk": "^4.1.2",
1314
"cross-env": "^7",
1415
"fs-jetpack": "^4",
16+
"mysql2": "^3.11.0",
1517
"sequelize": "^6",
16-
"@sequelize/core": "alpha",
1718
"sinon": "^13",
1819
"sinon-chai": "^3"
1920
},

src/sscce-sequelize-6.ts

Lines changed: 145 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,17 @@
1-
import { DataTypes, Model } from 'sequelize';
2-
import { createSequelize6Instance } from '../dev/create-sequelize-instance';
3-
import { expect } from 'chai';
4-
import sinon from 'sinon';
1+
import { DataTypes, fn, literal, Model, Sequelize } from "sequelize";
2+
import { createSequelize6Instance } from "../dev/create-sequelize-instance";
3+
import { expect } from "chai";
4+
import sinon from "sinon";
55

66
// if your issue is dialect specific, remove the dialects you don't need to test on.
7-
export const testingOnDialects = new Set(['mssql', 'sqlite', 'mysql', 'mariadb', 'postgres', 'postgres-native']);
7+
export const testingOnDialects = new Set([
8+
"mssql",
9+
"sqlite",
10+
"mysql",
11+
"mariadb",
12+
"postgres",
13+
"postgres-native",
14+
]);
815

916
// You can delete this file if you don't want your SSCCE to be tested against Sequelize 6
1017

@@ -21,21 +28,141 @@ export async function run() {
2128
},
2229
});
2330

24-
class Foo extends Model {}
31+
const authors = sequelize.define(
32+
"authors",
33+
{
34+
id: {
35+
autoIncrement: true,
36+
type: DataTypes.INTEGER,
37+
allowNull: false,
38+
primaryKey: true,
39+
},
40+
name: {
41+
type: DataTypes.STRING(255),
42+
allowNull: false,
43+
},
44+
bio: {
45+
type: DataTypes.TEXT,
46+
allowNull: true,
47+
},
48+
createdAt: {
49+
type: DataTypes.DATE,
50+
allowNull: false,
51+
defaultValue: Sequelize.literal("CURRENT_TIMESTAMP"),
52+
field: "created_at",
53+
},
54+
},
55+
{
56+
tableName: "authors",
57+
timestamps: false,
58+
indexes: [
59+
{
60+
name: "PRIMARY",
61+
unique: true,
62+
using: "BTREE",
63+
fields: [{ name: "id" }],
64+
},
65+
],
66+
}
67+
);
2568

26-
Foo.init({
27-
name: DataTypes.TEXT,
28-
}, {
29-
sequelize,
30-
modelName: 'Foo',
31-
});
69+
const books = sequelize.define(
70+
"books",
71+
{
72+
id: {
73+
autoIncrement: true,
74+
type: DataTypes.INTEGER,
75+
allowNull: false,
76+
primaryKey: true,
77+
},
78+
title: {
79+
type: DataTypes.STRING(255),
80+
allowNull: false,
81+
},
82+
genre: {
83+
type: DataTypes.STRING(100),
84+
allowNull: true,
85+
},
86+
authorId: {
87+
type: DataTypes.INTEGER,
88+
allowNull: true,
89+
references: {
90+
model: "authors",
91+
key: "id",
92+
},
93+
field: "author_id",
94+
},
95+
publishedDate: {
96+
type: DataTypes.DATEONLY,
97+
allowNull: true,
98+
field: "published_date",
99+
},
100+
createdAt: {
101+
type: DataTypes.DATE,
102+
allowNull: false,
103+
defaultValue: Sequelize.literal("CURRENT_TIMESTAMP"),
104+
field: "created_at",
105+
},
106+
},
107+
{
108+
tableName: "books",
109+
timestamps: false,
110+
indexes: [
111+
{
112+
name: "PRIMARY",
113+
unique: true,
114+
using: "BTREE",
115+
fields: [{ name: "id" }],
116+
},
117+
{
118+
name: "author_id",
119+
using: "BTREE",
120+
fields: [{ name: "author_id" }],
121+
},
122+
],
123+
}
124+
);
32125

33-
// You can use sinon and chai assertions directly in your SSCCE.
34-
const spy = sinon.spy();
35-
sequelize.afterBulkSync(() => spy());
126+
authors.hasMany(books, { foreignKey: "authorId" });
36127
await sequelize.sync({ force: true });
37-
expect(spy).to.have.been.called;
38128

39-
console.log(await Foo.create({ name: 'TS foo' }));
40-
expect(await Foo.count()).to.equal(1);
129+
await sequelize.query(
130+
"SET sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY,',''));"
131+
);
132+
133+
await authors.bulkCreate([
134+
{ name: "Author 1", bio: "Bio for author 1" },
135+
{ name: "Author 2", bio: "Bio for author 2" },
136+
]);
137+
138+
const result = await authors
139+
.findAll({
140+
where: { name: ["Author 1", "Author 2"] },
141+
include: [
142+
{
143+
model: books,
144+
// separate: true,
145+
limit: 5,
146+
attributes: [[fn("MAX", literal("`books`.`id`")), "maxId"], "title"],
147+
},
148+
],
149+
})
150+
.then((res) => JSON.stringify(res, null, 2));
151+
152+
expect(result).to.eql(`[
153+
{
154+
"id": 1,
155+
"name": "Author 1",
156+
"bio": "Bio for author 1",
157+
"createdAt": "2024-09-04T07:45:26.000Z",
158+
"books": []
159+
},
160+
{
161+
"id": 2,
162+
"name": "Author 2",
163+
"bio": "Bio for author 2",
164+
"createdAt": "2024-09-04T07:45:26.000Z",
165+
"books": []
166+
}
167+
]`);
41168
}

yarn.lock

Lines changed: 70 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -928,6 +928,11 @@ available-typed-arrays@^1.0.5, available-typed-arrays@^1.0.6:
928928
resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.6.tgz#ac812d8ce5a6b976d738e1c45f08d0b00bc7d725"
929929
integrity sha512-j1QzY8iPNPG4o4xmO3ptzpRxTciqD3MgEHtifP/YnJpIo58Xu+ne4BejlbkuaLfXn/nz6HFiw29bLpj2PNMdGg==
930930

931+
aws-ssl-profiles@^1.1.1:
932+
version "1.1.2"
933+
resolved "https://registry.yarnpkg.com/aws-ssl-profiles/-/aws-ssl-profiles-1.1.2.tgz#157dd77e9f19b1d123678e93f120e6f193022641"
934+
integrity sha512-NZKeq9AfyQvEeNlN0zSYAaWrmBffJh3IELMZfRpJVWgrpEbtEpnjvzqBPf+mxoI287JohRDoa+/nsfqqiZmF6g==
935+
931936
axe-core@=4.7.0:
932937
version "4.7.0"
933938
resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.7.0.tgz#34ba5a48a8b564f67e103f0aa5768d76e15bbbbf"
@@ -1382,6 +1387,11 @@ delegates@^1.0.0:
13821387
resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a"
13831388
integrity sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==
13841389

1390+
denque@^2.1.0:
1391+
version "2.1.0"
1392+
resolved "https://registry.yarnpkg.com/denque/-/denque-2.1.0.tgz#e93e1a6569fb5e66f16a3c2a2964617d349d6ab1"
1393+
integrity sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==
1394+
13851395
dequal@^2.0.3:
13861396
version "2.0.3"
13871397
resolved "https://registry.yarnpkg.com/dequal/-/dequal-2.0.3.tgz#2644214f1997d39ed0ee0ece72335490a7ac67be"
@@ -2141,6 +2151,13 @@ gauge@^4.0.3:
21412151
strip-ansi "^6.0.1"
21422152
wide-align "^1.1.5"
21432153

2154+
generate-function@^2.3.1:
2155+
version "2.3.1"
2156+
resolved "https://registry.yarnpkg.com/generate-function/-/generate-function-2.3.1.tgz#f069617690c10c868e73b8465746764f97c3479f"
2157+
integrity sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ==
2158+
dependencies:
2159+
is-property "^1.0.2"
2160+
21442161
gensync@^1.0.0-beta.2:
21452162
version "1.0.0-beta.2"
21462163
resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0"
@@ -2366,7 +2383,7 @@ iconv-lite@^0.4.24:
23662383
dependencies:
23672384
safer-buffer ">= 2.1.2 < 3"
23682385

2369-
iconv-lite@^0.6.2:
2386+
iconv-lite@^0.6.2, iconv-lite@^0.6.3:
23702387
version "0.6.3"
23712388
resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501"
23722389
integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==
@@ -2616,6 +2633,11 @@ is-plain-obj@^1.1.0:
26162633
resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e"
26172634
integrity sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==
26182635

2636+
is-property@^1.0.2:
2637+
version "1.0.2"
2638+
resolved "https://registry.yarnpkg.com/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84"
2639+
integrity sha512-Ks/IoX00TtClbGQr4TWXemAnktAQvYB7HzcCxDGqEZU6oCmb2INHuOoKxbtR+HFkmYWBKv/dOZtGRiAjDhj92g==
2640+
26192641
is-regex@^1.1.4:
26202642
version "1.1.4"
26212643
resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958"
@@ -2849,6 +2871,11 @@ lodash@^4.17.14, lodash@^4.17.19, lodash@^4.17.21:
28492871
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
28502872
integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
28512873

2874+
long@^5.2.1:
2875+
version "5.2.3"
2876+
resolved "https://registry.yarnpkg.com/long/-/long-5.2.3.tgz#a3ba97f3877cf1d778eccbcb048525ebb77499e1"
2877+
integrity sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==
2878+
28522879
loose-envify@^1.4.0:
28532880
version "1.4.0"
28542881
resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf"
@@ -2877,6 +2904,16 @@ lru-cache@^6.0.0:
28772904
dependencies:
28782905
yallist "^4.0.0"
28792906

2907+
lru-cache@^7.14.1:
2908+
version "7.18.3"
2909+
resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-7.18.3.tgz#f793896e0fd0e954a59dfdd82f0773808df6aa89"
2910+
integrity sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==
2911+
2912+
lru-cache@^8.0.0:
2913+
version "8.0.5"
2914+
resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-8.0.5.tgz#983fe337f3e176667f8e567cfcce7cb064ea214e"
2915+
integrity sha512-MhWWlVnuab1RG5/zMRRcVGXZLCXrZTgfwMikgzCegsPnG62yDQo5JnqKkrK4jO5iKqDAZGItAqN5CtKBCBWRUA==
2916+
28802917
make-error@^1.1.1:
28812918
version "1.3.6"
28822919
resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2"
@@ -3084,6 +3121,28 @@ mute-stream@0.0.8:
30843121
resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d"
30853122
integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==
30863123

3124+
mysql2@^3.11.0:
3125+
version "3.11.0"
3126+
resolved "https://registry.yarnpkg.com/mysql2/-/mysql2-3.11.0.tgz#2a7bd7c615ab43f8167ed9922063b968f3e48f33"
3127+
integrity sha512-J9phbsXGvTOcRVPR95YedzVSxJecpW5A5+cQ57rhHIFXteTP10HCs+VBjS7DHIKfEaI1zQ5tlVrquCd64A6YvA==
3128+
dependencies:
3129+
aws-ssl-profiles "^1.1.1"
3130+
denque "^2.1.0"
3131+
generate-function "^2.3.1"
3132+
iconv-lite "^0.6.3"
3133+
long "^5.2.1"
3134+
lru-cache "^8.0.0"
3135+
named-placeholders "^1.1.3"
3136+
seq-queue "^0.0.5"
3137+
sqlstring "^2.3.2"
3138+
3139+
named-placeholders@^1.1.3:
3140+
version "1.1.3"
3141+
resolved "https://registry.yarnpkg.com/named-placeholders/-/named-placeholders-1.1.3.tgz#df595799a36654da55dda6152ba7a137ad1d9351"
3142+
integrity sha512-eLoBxg6wE/rZkJPhU/xRX1WTpkFEwDJEN96oxFrTsqBdbT5ec295Q+CoHrL9IT0DipqKhmGcaZmwOt8OON5x1w==
3143+
dependencies:
3144+
lru-cache "^7.14.1"
3145+
30873146
napi-build-utils@^1.0.1:
30883147
version "1.0.2"
30893148
resolved "https://registry.yarnpkg.com/napi-build-utils/-/napi-build-utils-1.0.2.tgz#b1fddc0b2c46e380a0b7a76f984dd47c41a13806"
@@ -3764,6 +3823,11 @@ semver@^7.3.4, semver@^7.3.5, semver@^7.3.7, semver@^7.5.4:
37643823
dependencies:
37653824
lru-cache "^6.0.0"
37663825

3826+
seq-queue@^0.0.5:
3827+
version "0.0.5"
3828+
resolved "https://registry.yarnpkg.com/seq-queue/-/seq-queue-0.0.5.tgz#d56812e1c017a6e4e7c3e3a37a1da6d78dd3c93e"
3829+
integrity sha512-hr3Wtp/GZIc/6DAGPDcV4/9WoZhjrkXsi5B/07QgX8tsdc6ilr7BFM6PM6rbdAX1kFSDYeZGLipIZZKyQP0O5Q==
3830+
37673831
sequelize-pool@^7.1.0:
37683832
version "7.1.0"
37693833
resolved "https://registry.yarnpkg.com/sequelize-pool/-/sequelize-pool-7.1.0.tgz#210b391af4002762f823188fd6ecfc7413020768"
@@ -3981,6 +4045,11 @@ sqlite3@^5:
39814045
optionalDependencies:
39824046
node-gyp "8.x"
39834047

4048+
sqlstring@^2.3.2:
4049+
version "2.3.3"
4050+
resolved "https://registry.yarnpkg.com/sqlstring/-/sqlstring-2.3.3.tgz#2ddc21f03bce2c387ed60680e739922c65751d0c"
4051+
integrity sha512-qC9iz2FlN7DQl3+wjwn3802RTyjCx7sDvfQEXchwa6CWOx07/WVfh91gBmQ9fahw8snwGEWU3xGzOt4tFyHLxg==
4052+
39844053
ssri@^8.0.0, ssri@^8.0.1:
39854054
version "8.0.1"
39864055
resolved "https://registry.yarnpkg.com/ssri/-/ssri-8.0.1.tgz#638e4e439e2ffbd2cd289776d5ca457c4f51a2af"

0 commit comments

Comments
 (0)