feat: MeilisearchにIndexするノートの範囲を設定できるように (#101)
This commit is contained in:
		
							parent
							
								
									b77e7361fc
								
							
						
					
					
						commit
						6611b74a0c
					
				|  | @ -104,6 +104,7 @@ redis: | |||
| #  apiKey: '' | ||||
| #  ssl: true | ||||
| #  index: '' | ||||
| #  scope: local | ||||
| 
 | ||||
| #   ┌───────────────┐ | ||||
| #───┘ ID generation └─────────────────────────────────────────── | ||||
|  |  | |||
|  | @ -63,6 +63,7 @@ export type Source = { | |||
| 		apiKey: string; | ||||
| 		ssl?: boolean; | ||||
| 		index: string; | ||||
| 		scope?: 'local' | 'global' | string[]; | ||||
| 	}; | ||||
| 
 | ||||
| 	proxy?: string; | ||||
|  |  | |||
|  | @ -52,6 +52,7 @@ function compileQuery(q: Q): string { | |||
| 
 | ||||
| @Injectable() | ||||
| export class SearchService { | ||||
| 	private readonly meilisearchIndexScope: 'local' | 'global' | string[] = 'local'; | ||||
| 	private meilisearchNoteIndex: Index | null = null; | ||||
| 
 | ||||
| 	constructor( | ||||
|  | @ -92,6 +93,10 @@ export class SearchService { | |||
| 				}, | ||||
| 			}); | ||||
| 		} | ||||
| 
 | ||||
| 		if (config.meilisearch?.scope) { | ||||
| 			this.meilisearchIndexScope = config.meilisearch.scope; | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| 	@bindThis | ||||
|  | @ -100,7 +105,22 @@ export class SearchService { | |||
| 		if (!['home', 'public'].includes(note.visibility)) return; | ||||
| 
 | ||||
| 		if (this.meilisearch) { | ||||
| 			this.meilisearchNoteIndex!.addDocuments([{ | ||||
| 			switch (this.meilisearchIndexScope) { | ||||
| 				case 'global': | ||||
| 					break; | ||||
| 
 | ||||
| 				case 'local': | ||||
| 					if (note.userHost == null) break; | ||||
| 					return; | ||||
| 
 | ||||
| 				default: { | ||||
| 					if (note.userHost == null) break; | ||||
| 					if (this.meilisearchIndexScope.includes(note.userHost)) break; | ||||
| 					return; | ||||
| 				} | ||||
| 			} | ||||
| 
 | ||||
| 			await this.meilisearchNoteIndex?.addDocuments([{ | ||||
| 				id: note.id, | ||||
| 				createdAt: note.createdAt.getTime(), | ||||
| 				userId: note.userId, | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue