juice-shop
145 строк · 3.2 Кб
1import { type Sequelize } from 'sequelize/types'
2import { AddressModel } from './address'
3import { BasketModel } from './basket'
4import { BasketItemModel } from './basketitem'
5import { CardModel } from './card'
6import { ComplaintModel } from './complaint'
7import { FeedbackModel } from './feedback'
8import { ImageCaptchaModel } from './imageCaptcha'
9import { MemoryModel } from './memory'
10import { PrivacyRequestModel } from './privacyRequests'
11import { ProductModel } from './product'
12import { QuantityModel } from './quantity'
13import { RecycleModel } from './recycle'
14import { SecurityAnswerModel } from './securityAnswer'
15import { SecurityQuestionModel } from './securityQuestion'
16import { UserModel } from './user'
17import { WalletModel } from './wallet'
18
19import { makeKeyNonUpdatable } from '../lib/noUpdate'
20
21const relationsInit = (_sequelize: Sequelize) => {
22AddressModel.belongsTo(UserModel, {
23constraints: true,
24foreignKeyConstraint: true,
25foreignKey: {
26name: 'UserId'
27}
28})
29
30BasketModel.belongsTo(UserModel, {
31constraints: true,
32foreignKeyConstraint: true,
33foreignKey: {
34name: 'UserId'
35}
36})
37BasketModel.belongsToMany(ProductModel, {
38through: BasketItemModel,
39as: 'Products',
40foreignKey: {
41name: 'BasketId'
42}
43})
44// @ts-expect-error FIXME type mismatch
45makeKeyNonUpdatable(BasketItemModel, 'BasketId')
46
47CardModel.belongsTo(UserModel, {
48constraints: true,
49foreignKeyConstraint: true,
50foreignKey: {
51name: 'UserId'
52}
53})
54
55ComplaintModel.belongsTo(UserModel, {
56constraints: true,
57foreignKeyConstraint: true,
58foreignKey: {
59name: 'UserId'
60}
61})
62
63FeedbackModel.belongsTo(UserModel, {
64foreignKey: {
65name: 'UserId'
66}
67}) // no FK constraint to allow anonymous feedback posts
68
69ImageCaptchaModel.belongsTo(UserModel, {
70foreignKey: {
71name: 'UserId'
72}
73})
74
75MemoryModel.belongsTo(UserModel, {
76constraints: true,
77foreignKeyConstraint: true,
78foreignKey: {
79name: 'UserId'
80}
81})
82
83PrivacyRequestModel.belongsTo(UserModel, {
84constraints: true,
85foreignKeyConstraint: true,
86foreignKey: {
87name: 'UserId'
88}
89})
90
91ProductModel.belongsToMany(BasketModel, {
92through: BasketItemModel,
93foreignKey: {
94name: 'ProductId'
95}
96})
97// @ts-expect-error FIXME type mismatch
98makeKeyNonUpdatable(BasketItemModel, 'ProductId')
99
100QuantityModel.belongsTo(ProductModel, {
101constraints: true,
102foreignKeyConstraint: true,
103foreignKey: {
104name: 'ProductId'
105}
106})
107
108RecycleModel.belongsTo(UserModel, {
109constraints: true,
110foreignKeyConstraint: true,
111foreignKey: {
112name: 'UserId'
113}
114})
115RecycleModel.belongsTo(AddressModel, {
116constraints: true,
117foreignKeyConstraint: true,
118foreignKey: {
119name: 'AddressId'
120}
121})
122
123SecurityAnswerModel.belongsTo(UserModel, {
124foreignKey: {
125name: 'UserId'
126}
127})
128SecurityAnswerModel.belongsTo(SecurityQuestionModel, {
129constraints: true,
130foreignKeyConstraint: true,
131foreignKey: {
132name: 'SecurityQuestionId'
133}
134})
135
136WalletModel.belongsTo(UserModel, {
137constraints: true,
138foreignKeyConstraint: true,
139foreignKey: {
140name: 'UserId'
141}
142})
143}
144
145export { relationsInit }
146