MCPcopy Create free account
hub / github.com/devaccuracy/ledgerforge / initializeTypeSense

Function initializeTypeSense

cmd/server.go:206–236  ·  view source on GitHub ↗
(ctx context.Context, cfg *config.Configuration)

Source from the content-addressed store, hash-verified

204}
205
206func initializeTypeSense(ctx context.Context, cfg *config.Configuration) (*search.TypesenseClient, error) {
207 if cfg.TypeSense.Dns == "" {
208 logrus.Warn("TypeSense DNS not configured. Search functionality will be disabled.")
209 return nil, nil
210 }
211
212 newSearch := search.NewTypesenseClient(cfg.TypeSenseKey, []string{cfg.TypeSense.Dns})
213
214 const maxRetries = 5
215 var retryDelay = 2 * time.Second
216 var err error
217
218 for i := 0; i < maxRetries; i++ {
219 if err = newSearch.EnsureCollectionsExist(ctx); err == nil {
220 if err = migrateTypeSenseSchema(ctx, newSearch); err == nil {
221 return newSearch, nil
222 }
223 }
224
225 logrus.Errorf("TypeSense initialization failed (attempt %d/%d): %v. Retrying in %v...", i+1, maxRetries, err, retryDelay)
226
227 select {
228 case <-ctx.Done():
229 return nil, ctx.Err()
230 case <-time.After(retryDelay):
231 retryDelay *= 2
232 }
233 }
234
235 return nil, fmt.Errorf("failed to initialize TypeSense after %d attempts: %v", maxRetries, err)
236}
237
238func initializePostHog(cfg *config.Configuration) (posthog.Client, string) {
239 if cfg.TelemetryKey == "" {

Callers 1

serverCommandsFunction · 0.85

Calls 4

NewTypesenseClientFunction · 0.92
migrateTypeSenseSchemaFunction · 0.85
WarnMethod · 0.45

Tested by

no test coverage detected