switch to sqlite
1 file changed, 19 insertions(+), 13 deletions(-)
changed files
M internal/website/website.go → internal/website/website.go
@@ -3,7 +3,6 @@ import ( "fmt" "net/http" - "os" "slices" "strings"@@ -13,7 +12,7 @@ "go.alanpearce.eu/website/internal/config" ihttp "go.alanpearce.eu/website/internal/http" "go.alanpearce.eu/website/internal/server" "go.alanpearce.eu/website/internal/storage" - "go.alanpearce.eu/website/internal/storage/files" + "go.alanpearce.eu/website/internal/storage/sqlite" "go.alanpearce.eu/website/internal/vcs" "go.alanpearce.eu/website/internal/watcher" "go.alanpearce.eu/website/templates"@@ -44,7 +43,6 @@ } builderOptions := &builder.Options{ Source: opts.Source, Development: opts.Development, - Destination: opts.Destination, } repo, exists, err := vcs.CloneOrOpen(&vcs.Options{@@ -82,16 +80,9 @@ } else { http.Error(w, err.Message, err.Code) } }) + if opts.Development { - tmpdir, err := os.MkdirTemp("", "website") - if err != nil { - log.Fatal("could not create temporary directory", "error", err) - } - log.Info("using temporary directory", "dir", tmpdir) - website.App.Shutdown = func() { - os.RemoveAll(tmpdir) - } - builderOptions.Destination = tmpdir + opts.DBPath = ":memory:" cfg.CSP.ScriptSrc = slices.Insert(cfg.CSP.ScriptSrc, 0, "'unsafe-inline'") cfg.CSP.ConnectSrc = slices.Insert(cfg.CSP.ConnectSrc, 0, "'self'")@@ -99,6 +90,11 @@ cfg.BaseURL = opts.BaseURL } + builderOptions.DB, err = sqlite.OpenDB(opts.DBPath) + if err != nil { + return nil, errors.WithMessage(err, "could not open database") + } + website.Domain = cfg.BaseURL.Hostname() err = rebuild(builderOptions, cfg, log)@@ -128,6 +124,16 @@ } go fw.Start(func(filename string) { log.Info("rebuilding site", "changed_file", filename) + builderOptions.DB.Close() + builderOptions.DB, err = sqlite.OpenDB(opts.DBPath) + if err != nil { + log.Error("error opening database", "error", err) + } + website.reader, err = sqlite.NewReader(builderOptions.DB, log.Named("reader")) + if err != nil { + log.Error("error creating sqlite reader", "error", err) + } + err := rebuild(builderOptions, cfg, log) if err != nil { log.Error("error rebuilding site", "error", err)@@ -136,7 +142,7 @@ opts.LiveReload.Reload() }) } - website.reader, err = files.NewReader(builderOptions.Destination, log.Named("reader")) + website.reader, err = sqlite.NewReader(builderOptions.DB, log.Named("reader")) if err != nil { return nil, errors.WithMessage(err, "error creating sqlite reader") }