all repos

onasty @ ebcfde16e154958e0949a5abc611dde2e9b22960

a one-time notes service

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
package main

import (
	"context"
	"fmt"
	"log/slog"
	"os"

	"github.com/olexsmir/onasty/internal/config"
	"github.com/olexsmir/onasty/internal/hasher"
	"github.com/olexsmir/onasty/internal/logger"
	"github.com/olexsmir/onasty/internal/store/psqlutil"
)

func main() {
	if err := run(context.Background()); err != nil {
		fmt.Fprintf(os.Stderr, "error: %v\n", err)
		os.Exit(1)
	}
}

func run(ctx context.Context) error {
	cfg := config.NewConfig()
	cfg.PostgresDSN = os.Getenv("SEED_DSN")

	logger, err := logger.NewCustomLogger(cfg.LogLevel, cfg.LogFormat, cfg.LogShowLine)
	if err != nil {
		return err
	}
	slog.SetDefault(logger)

	psql, err := psqlutil.Connect(ctx, cfg.PostgresDSN)
	if err != nil {
		return err
	}

	userHasher := hasher.NewSHA256Hasher(cfg.PasswordSalt)
	noteHasher := hasher.NewSHA256Hasher(cfg.NotePasswordSalt)

	if err := seedUsers(ctx, userHasher, psql); err != nil {
		return fmt.Errorf("failed to seed users: %w", err)
	}

	slog.Info("Users seeded successfully")

	if err := seedNotes(ctx, noteHasher, psql); err != nil {
		return fmt.Errorf("failed to seed notes: %w", err)
	}

	slog.Info("Notes seeded successfully")

	return nil
}