in cmd/seeder/main.go [22:72]
func main() {
var opts options
if _, err := flags.Parse(&opts); err != nil {
os.Exit(1)
}
log.Println("Starting seeding service")
log.Println("Bucket ID:", opts.BucketId)
log.Println("Database URL:", opts.DatabaseUrl)
// Connect database
ctx := context.Background()
db := repo.NewDatabase(opts.DatabaseUrl, maxDbConnections)
if err := db.Connect(ctx); err != nil {
log.Fatalf("Error connecting to database: %v\n", err)
}
defer db.Close()
if err := db.Setup(); err != nil {
log.Fatalf("Error configuring database: %v\n", err)
}
if err := db.CreateTables(); err != nil {
log.Fatalf("Error creating tables: %v\n", err)
}
// Connect to storage client
client, err := storage.NewClient(ctx)
if err != nil {
log.Fatalf("Error creating storage client: %v\n", err)
}
// Instantiate repositories
directoryRepo := repo.NewDirectoryRepository(db)
metadataRepo := repo.NewMetadataRepository(db)
seedService := seeder.NewSeedService(client, opts.BucketId, directoryRepo, metadataRepo)
// Begin seeding
start := time.Now()
if err := seedService.Start(ctx); err != nil {
log.Fatalf("Error while seeding: %v\n", err)
}
if err := db.CreateIndexes(); err != nil {
log.Fatalf("Error creating indexes: %v\n", err)
}
log.Printf("Seeding completed. Duration: %v\n", time.Since(start))
}