1 | <?php |
||
55 | class FullTextSearchService { |
||
56 | |||
57 | |||
58 | /** @var BoardMapper */ |
||
59 | private $boardMapper; |
||
60 | |||
61 | /** @var StackMapper */ |
||
62 | private $stackMapper; |
||
63 | |||
64 | /** @var CardMapper */ |
||
65 | private $cardMapper; |
||
66 | |||
67 | /** @var IFullTextSearchManager */ |
||
68 | private $fullTextSearchManager; |
||
69 | |||
70 | |||
71 | /** |
||
72 | * FullTextSearchService constructor. |
||
73 | * |
||
74 | * @param BoardMapper $boardMapper |
||
75 | * @param StackMapper $stackMapper |
||
76 | * @param CardMapper $cardMapper |
||
77 | * @param IFullTextSearchManager $fullTextSearchManager |
||
78 | */ |
||
79 | public function __construct( |
||
80 | BoardMapper $boardMapper, StackMapper $stackMapper, CardMapper $cardMapper, |
||
81 | IFullTextSearchManager $fullTextSearchManager |
||
82 | ) { |
||
83 | $this->boardMapper = $boardMapper; |
||
84 | $this->stackMapper = $stackMapper; |
||
85 | $this->cardMapper = $cardMapper; |
||
86 | |||
87 | $this->fullTextSearchManager = $fullTextSearchManager; |
||
88 | } |
||
89 | |||
90 | |||
91 | /** |
||
92 | * @param GenericEvent $e |
||
93 | */ |
||
94 | public function onCardCreated(GenericEvent $e) { |
||
95 | $cardId = $e->getArgument('id'); |
||
96 | $userId = $e->getArgument('userId'); |
||
97 | |||
98 | $this->fullTextSearchManager->createIndex( |
||
99 | DeckProvider::DECK_PROVIDER_ID, (string)$cardId, $userId, IIndex::INDEX_FULL |
||
100 | ); |
||
101 | } |
||
102 | |||
103 | |||
104 | /** |
||
105 | * @param GenericEvent $e |
||
106 | */ |
||
107 | public function onCardUpdated(GenericEvent $e) { |
||
108 | $cardId = $e->getArgument('id'); |
||
109 | |||
110 | $this->fullTextSearchManager->updateIndexStatus( |
||
111 | DeckProvider::DECK_PROVIDER_ID, (string)$cardId, IIndex::INDEX_CONTENT |
||
112 | ); |
||
113 | } |
||
114 | |||
115 | |||
116 | /** |
||
117 | * @param GenericEvent $e |
||
118 | */ |
||
119 | public function onCardDeleted(GenericEvent $e) { |
||
120 | $cardId = $e->getArgument('id'); |
||
121 | |||
122 | $this->fullTextSearchManager->updateIndexStatus( |
||
123 | DeckProvider::DECK_PROVIDER_ID, (string)$cardId, IIndex::INDEX_REMOVE |
||
124 | ); |
||
125 | } |
||
126 | |||
127 | |||
128 | /** |
||
129 | * @param GenericEvent $e |
||
130 | */ |
||
131 | public function onBoardShares(GenericEvent $e) { |
||
132 | $boardId = $e->getArgument('boardId'); |
||
133 | |||
134 | $cards = array_map( |
||
135 | function(Card $item) { |
||
136 | return $item->getId(); |
||
137 | }, |
||
138 | $this->getCardsFromBoard($boardId) |
||
139 | ); |
||
140 | $this->fullTextSearchManager->updateIndexesStatus( |
||
141 | DeckProvider::DECK_PROVIDER_ID, $cards, IIndex::INDEX_META |
||
142 | ); |
||
143 | } |
||
144 | |||
145 | |||
146 | /** |
||
147 | * @param Card $card |
||
148 | * |
||
149 | * @return IIndexDocument |
||
150 | */ |
||
151 | public function generateIndexDocumentFromCard(Card $card): IIndexDocument { |
||
156 | |||
157 | |||
158 | /** |
||
159 | * @param IIndexDocument $document |
||
160 | * |
||
161 | * @throws DoesNotExistException |
||
162 | * @throws MultipleObjectsReturnedException |
||
163 | */ |
||
164 | public function fillIndexDocument(IIndexDocument $document) { |
||
172 | |||
173 | |||
174 | /** |
||
175 | * @param int $cardId |
||
176 | * |
||
177 | * @return IDocumentAccess |
||
178 | * @throws DoesNotExistException |
||
179 | * @throws MultipleObjectsReturnedException |
||
180 | */ |
||
181 | public function generateDocumentAccessFromCardId(int $cardId): IDocumentAccess { |
||
188 | |||
189 | |||
190 | /** |
||
191 | * @param string $userId |
||
192 | * |
||
193 | * @return Card[] |
||
194 | */ |
||
195 | public function getCardsFromUser(string $userId): array { |
||
207 | |||
208 | |||
209 | /** |
||
210 | * @param int $boardId |
||
211 | * |
||
212 | * @return Card[] |
||
213 | */ |
||
214 | public function getCardsFromBoard(int $boardId): array { |
||
223 | |||
224 | |||
225 | /** |
||
226 | * @param int $cardId |
||
227 | * |
||
228 | * @return Board |
||
229 | * @throws DoesNotExistException |
||
230 | * @throws MultipleObjectsReturnedException |
||
231 | */ |
||
232 | public function getBoardFromCardId(int $cardId): Board { |
||
239 | |||
240 | |||
241 | /** |
||
242 | * @param int $stackId |
||
243 | * |
||
244 | * @return Card[] |
||
245 | */ |
||
246 | private function getCardsFromStack(int $stackId): array { |
||
249 | |||
250 | |||
251 | /** |
||
252 | * @param int $boardId |
||
253 | * |
||
254 | * @return Stack[] |
||
255 | */ |
||
256 | private function getStacksFromBoard(int $boardId): array { |
||
260 | |||
261 | |||
262 | /** |
||
263 | * @param string $userId |
||
264 | * |
||
265 | * @return Board[] |
||
266 | */ |
||
267 | private function getBoardsFromUser(string $userId): array { |
||
270 | |||
271 | |||
272 | } |
||
273 | |||
274 |