@@ -2,14 +2,16 @@ package ru.otus.otuskotlin.marketplace.biz
2
2
3
3
import ru.otus.otuskotlin.marketplace.biz.general.initStatus
4
4
import ru.otus.otuskotlin.marketplace.biz.general.operation
5
- import ru.otus.otuskotlin.marketplace.biz.general.stubs
5
+ import ru.otus.otuskotlin.marketplace.biz.repo.*
6
6
import ru.otus.otuskotlin.marketplace.biz.stubs.*
7
7
import ru.otus.otuskotlin.marketplace.biz.validation.*
8
8
import ru.otus.otuskotlin.marketplace.common.MkplContext
9
9
import ru.otus.otuskotlin.marketplace.common.MkplCorSettings
10
10
import ru.otus.otuskotlin.marketplace.common.models.MkplAdId
11
11
import ru.otus.otuskotlin.marketplace.common.models.MkplAdLock
12
12
import ru.otus.otuskotlin.marketplace.common.models.MkplCommand
13
+ import ru.otus.otuskotlin.marketplace.common.models.MkplState
14
+ import ru.otus.otuskotlin.marketplace.cor.chain
13
15
import ru.otus.otuskotlin.marketplace.cor.rootChain
14
16
import ru.otus.otuskotlin.marketplace.cor.worker
15
17
@@ -20,6 +22,7 @@ class MkplAdProcessor(
20
22
21
23
private val businessChain = rootChain<MkplContext > {
22
24
initStatus(" Инициализация статуса" )
25
+ initRepo(" Инициализация репозитория" )
23
26
24
27
operation(" Создание объявления" , MkplCommand .CREATE ) {
25
28
stubs(" Обработка стабов" ) {
@@ -41,6 +44,12 @@ class MkplAdProcessor(
41
44
42
45
finishAdValidation(" Завершение проверок" )
43
46
}
47
+ chain {
48
+ title = " Логика сохранения"
49
+ repoPrepareCreate(" Подготовка объекта для сохранения" )
50
+ repoCreate(" Создание объявления в БД" )
51
+ }
52
+ prepareResult(" Подготовка ответа" )
44
53
}
45
54
operation(" Получить объявление" , MkplCommand .READ ) {
46
55
stubs(" Обработка стабов" ) {
@@ -57,6 +66,16 @@ class MkplAdProcessor(
57
66
58
67
finishAdValidation(" Успешное завершение процедуры валидации" )
59
68
}
69
+ chain {
70
+ title = " Логика чтения"
71
+ repoRead(" Чтение объявления из БД" )
72
+ worker {
73
+ title = " Подготовка ответа для Read"
74
+ on { state == MkplState .RUNNING }
75
+ handle { adRepoDone = adRepoRead }
76
+ }
77
+ }
78
+ prepareResult(" Подготовка ответа" )
60
79
}
61
80
operation(" Изменить объявление" , MkplCommand .UPDATE ) {
62
81
stubs(" Обработка стабов" ) {
@@ -84,6 +103,13 @@ class MkplAdProcessor(
84
103
85
104
finishAdValidation(" Успешное завершение процедуры валидации" )
86
105
}
106
+ chain {
107
+ title = " Логика сохранения"
108
+ repoRead(" Чтение объявления из БД" )
109
+ repoPrepareUpdate(" Подготовка объекта для обновления" )
110
+ repoUpdate(" Обновление объявления в БД" )
111
+ }
112
+ prepareResult(" Подготовка ответа" )
87
113
}
88
114
operation(" Удалить объявление" , MkplCommand .DELETE ) {
89
115
stubs(" Обработка стабов" ) {
@@ -104,6 +130,13 @@ class MkplAdProcessor(
104
130
validateLockProperFormat(" Проверка формата lock" )
105
131
finishAdValidation(" Успешное завершение процедуры валидации" )
106
132
}
133
+ chain {
134
+ title = " Логика удаления"
135
+ repoRead(" Чтение объявления из БД" )
136
+ repoPrepareDelete(" Подготовка объекта для удаления" )
137
+ repoDelete(" Удаление объявления из БД" )
138
+ }
139
+ prepareResult(" Подготовка ответа" )
107
140
}
108
141
operation(" Поиск объявлений" , MkplCommand .SEARCH ) {
109
142
stubs(" Обработка стабов" ) {
@@ -118,6 +151,8 @@ class MkplAdProcessor(
118
151
119
152
finishAdFilterValidation(" Успешное завершение процедуры валидации" )
120
153
}
154
+ repoSearch(" Поиск объявления в БД по фильтру" )
155
+ prepareResult(" Подготовка ответа" )
121
156
}
122
157
operation(" Поиск подходящих предложений для объявления" , MkplCommand .OFFERS ) {
123
158
stubs(" Обработка стабов" ) {
@@ -134,6 +169,13 @@ class MkplAdProcessor(
134
169
135
170
finishAdValidation(" Успешное завершение процедуры валидации" )
136
171
}
172
+ chain {
173
+ title = " Логика поиска в БД"
174
+ repoRead(" Чтение объявления из БД" )
175
+ repoPrepareOffers(" Подготовка данных для поиска предложений" )
176
+ repoOffers(" Поиск предложений для объявления в БД" )
177
+ }
178
+ prepareResult(" Подготовка ответа" )
137
179
}
138
180
}.build()
139
181
}
0 commit comments