Added a database

This commit is contained in:
Leon Mika 2026-02-19 22:29:44 +11:00
parent ebaec3d296
commit 8136655336
35 changed files with 925 additions and 134 deletions

View file

@ -0,0 +1,51 @@
package importer
import (
"context"
"os"
"emperror.dev/errors"
"lmika.dev/lmika/weiro/models"
"lmika.dev/lmika/weiro/providers/db"
"lmika.dev/lmika/weiro/providers/sitereader"
)
type Service struct {
db *db.Provider
}
func New(db *db.Provider) *Service {
return &Service{
db: db,
}
}
func (s *Service) Import(ctx context.Context, sitePath string) (models.Site, error) {
user, ok := models.GetUser(ctx)
if !ok {
return models.Site{}, models.UserRequiredError
}
sr := sitereader.New(os.DirFS(sitePath))
readSite, err := sr.ReadSite()
if err != nil {
return models.Site{}, errors.Wrap(err, "failed to read site")
}
site := readSite.Site
site.OwnerID = user.ID
if err := s.db.SaveSite(ctx, &site); err != nil {
return models.Site{}, errors.Wrap(err, "failed to save site")
}
for _, post := range readSite.Posts {
post.SiteID = site.ID
if err := s.db.SavePost(ctx, post); err != nil {
return models.Site{}, errors.Wrap(err, "failed to save post")
}
}
return site, nil
}