all repos

onasty @ 7cca7d4

a one-time notes service

onasty/cmd/seed/main.go (view raw)

Smirnov Oleksandr Smirnov Oleksandr
ss2316544@gmail.com
feat: add seeder (#116)..., 1 year ago
1
package main
2
3
import (
4
	"context"
5
	"fmt"
6
	"log/slog"
7
	"os"
8
9
	"github.com/olexsmir/onasty/internal/config"
10
	"github.com/olexsmir/onasty/internal/hasher"
11
	"github.com/olexsmir/onasty/internal/logger"
12
	"github.com/olexsmir/onasty/internal/store/psqlutil"
13
)
14
15
func main() {
16
	if err := run(context.Background()); err != nil {
17
		fmt.Fprintf(os.Stderr, "error: %v\n", err)
18
		os.Exit(1)
19
	}
20
}
21
22
func run(ctx context.Context) error {
23
	cfg := config.NewConfig()
24
	cfg.PostgresDSN = os.Getenv("SEED_DSN")
25
26
	logger, err := logger.NewCustomLogger(cfg.LogLevel, cfg.LogFormat, cfg.LogShowLine)
27
	if err != nil {
28
		return err
29
	}
30
	slog.SetDefault(logger)
31
32
	psql, err := psqlutil.Connect(ctx, cfg.PostgresDSN)
33
	if err != nil {
34
		return err
35
	}
36
37
	userHasher := hasher.NewSHA256Hasher(cfg.PasswordSalt)
38
	noteHasher := hasher.NewSHA256Hasher(cfg.NotePasswordSalt)
39
40
	if err := seedUsers(ctx, userHasher, psql); err != nil {
41
		return fmt.Errorf("failed to seed users: %w", err)
42
	}
43
44
	slog.Info("Users seeded successfully")
45
46
	if err := seedNotes(ctx, noteHasher, psql); err != nil {
47
		return fmt.Errorf("failed to seed notes: %w", err)
48
	}
49
50
	slog.Info("Notes seeded successfully")
51
52
	return nil
53
}