juice-shop

Форк
0
/
relations.ts 
145 строк · 3.2 Кб
1
import { type Sequelize } from 'sequelize/types'
2
import { AddressModel } from './address'
3
import { BasketModel } from './basket'
4
import { BasketItemModel } from './basketitem'
5
import { CardModel } from './card'
6
import { ComplaintModel } from './complaint'
7
import { FeedbackModel } from './feedback'
8
import { ImageCaptchaModel } from './imageCaptcha'
9
import { MemoryModel } from './memory'
10
import { PrivacyRequestModel } from './privacyRequests'
11
import { ProductModel } from './product'
12
import { QuantityModel } from './quantity'
13
import { RecycleModel } from './recycle'
14
import { SecurityAnswerModel } from './securityAnswer'
15
import { SecurityQuestionModel } from './securityQuestion'
16
import { UserModel } from './user'
17
import { WalletModel } from './wallet'
18

19
import { makeKeyNonUpdatable } from '../lib/noUpdate'
20

21
const relationsInit = (_sequelize: Sequelize) => {
22
  AddressModel.belongsTo(UserModel, {
23
    constraints: true,
24
    foreignKeyConstraint: true,
25
    foreignKey: {
26
      name: 'UserId'
27
    }
28
  })
29

30
  BasketModel.belongsTo(UserModel, {
31
    constraints: true,
32
    foreignKeyConstraint: true,
33
    foreignKey: {
34
      name: 'UserId'
35
    }
36
  })
37
  BasketModel.belongsToMany(ProductModel, {
38
    through: BasketItemModel,
39
    as: 'Products',
40
    foreignKey: {
41
      name: 'BasketId'
42
    }
43
  })
44
  // @ts-expect-error FIXME type mismatch
45
  makeKeyNonUpdatable(BasketItemModel, 'BasketId')
46

47
  CardModel.belongsTo(UserModel, {
48
    constraints: true,
49
    foreignKeyConstraint: true,
50
    foreignKey: {
51
      name: 'UserId'
52
    }
53
  })
54

55
  ComplaintModel.belongsTo(UserModel, {
56
    constraints: true,
57
    foreignKeyConstraint: true,
58
    foreignKey: {
59
      name: 'UserId'
60
    }
61
  })
62

63
  FeedbackModel.belongsTo(UserModel, {
64
    foreignKey: {
65
      name: 'UserId'
66
    }
67
  }) // no FK constraint to allow anonymous feedback posts
68

69
  ImageCaptchaModel.belongsTo(UserModel, {
70
    foreignKey: {
71
      name: 'UserId'
72
    }
73
  })
74

75
  MemoryModel.belongsTo(UserModel, {
76
    constraints: true,
77
    foreignKeyConstraint: true,
78
    foreignKey: {
79
      name: 'UserId'
80
    }
81
  })
82

83
  PrivacyRequestModel.belongsTo(UserModel, {
84
    constraints: true,
85
    foreignKeyConstraint: true,
86
    foreignKey: {
87
      name: 'UserId'
88
    }
89
  })
90

91
  ProductModel.belongsToMany(BasketModel, {
92
    through: BasketItemModel,
93
    foreignKey: {
94
      name: 'ProductId'
95
    }
96
  })
97
  // @ts-expect-error FIXME type mismatch
98
  makeKeyNonUpdatable(BasketItemModel, 'ProductId')
99

100
  QuantityModel.belongsTo(ProductModel, {
101
    constraints: true,
102
    foreignKeyConstraint: true,
103
    foreignKey: {
104
      name: 'ProductId'
105
    }
106
  })
107

108
  RecycleModel.belongsTo(UserModel, {
109
    constraints: true,
110
    foreignKeyConstraint: true,
111
    foreignKey: {
112
      name: 'UserId'
113
    }
114
  })
115
  RecycleModel.belongsTo(AddressModel, {
116
    constraints: true,
117
    foreignKeyConstraint: true,
118
    foreignKey: {
119
      name: 'AddressId'
120
    }
121
  })
122

123
  SecurityAnswerModel.belongsTo(UserModel, {
124
    foreignKey: {
125
      name: 'UserId'
126
    }
127
  })
128
  SecurityAnswerModel.belongsTo(SecurityQuestionModel, {
129
    constraints: true,
130
    foreignKeyConstraint: true,
131
    foreignKey: {
132
      name: 'SecurityQuestionId'
133
    }
134
  })
135

136
  WalletModel.belongsTo(UserModel, {
137
    constraints: true,
138
    foreignKeyConstraint: true,
139
    foreignKey: {
140
      name: 'UserId'
141
    }
142
  })
143
}
144

145
export { relationsInit }
146

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.