Compare commits

..

No commits in common. "main" and "feature/rss" have entirely different histories.

7 changed files with 6 additions and 61 deletions

View file

@ -25,7 +25,6 @@ FROM alpine:latest
RUN apk --no-cache add ca-certificates RUN apk --no-cache add ca-certificates
RUN mkdir -p /data RUN mkdir -p /data
RUN mkdir -p /scratch
WORKDIR /root/ WORKDIR /root/
@ -35,7 +34,6 @@ COPY --from=builder /app/static ./static
COPY --from=builder /app/views ./views COPY --from=builder /app/views ./views
ENV DATA_DIR=/data ENV DATA_DIR=/data
ENV SCRATCH_DIR=/scratch
EXPOSE 3000 EXPOSE 3000

View file

@ -116,7 +116,7 @@ Starting weiro without any arguments will start the server.
app.Post("/login", lh.DoLogin) app.Post("/login", lh.DoLogin)
app.Post("/logout", lh.Logout) app.Post("/logout", lh.Logout)
siteGroup := app.Group("/sites/:siteID", middleware.LogErrors(), middleware.RequireUser(svcs.Auth), middleware.RequiresSite(svcs.Sites)) siteGroup := app.Group("/sites/:siteID", middleware.RequireUser(svcs.Auth), middleware.RequiresSite(svcs.Sites))
siteGroup.Get("/posts", ph.Index) siteGroup.Get("/posts", ph.Index)
siteGroup.Get("/posts/new", ph.New) siteGroup.Get("/posts/new", ph.New)

View file

@ -9,7 +9,7 @@ import (
type Config struct { type Config struct {
DataDir string `env:"DATA_DIR"` DataDir string `env:"DATA_DIR"`
ScratchDir string `env:"SCRATCH_DIR,default=/tmp"` ScratchDir string `env:"SCRATCH_DIR"`
SiteDomain string `env:"SITE_DOMAIN"` SiteDomain string `env:"SITE_DOMAIN"`
LoginLocked bool `env:"LOGIN_LOCKED,default=false"` LoginLocked bool `env:"LOGIN_LOCKED,default=false"`
Env string `env:"ENV,default=prod"` Env string `env:"ENV,default=prod"`

View file

@ -1,17 +0,0 @@
package middleware
import (
"log"
"github.com/gofiber/fiber/v3"
)
func LogErrors() func(c fiber.Ctx) error {
return func(c fiber.Ctx) error {
if err := c.Next(); err != nil {
log.Printf("error: %v\n", err)
return err
}
return nil
}
}

View file

@ -148,7 +148,7 @@ func (b *Builder) renderFeeds(ctx buildContext, postIter iter.Seq[models.Maybe[*
Content: string(renderedPost.HTML), Content: string(renderedPost.HTML),
// TO FIX: Created should be first published // TO FIX: Created should be first published
Created: post.PublishedAt, Created: post.PublishedAt,
Updated: post.UpdatedAt, Updated: post.PublishedAt,
}) })
items++ items++

View file

@ -26,44 +26,10 @@ func (p *Provider) AdoptFile(site models.Site, up models.Upload, filename string
return err return err
} }
if err := os.Rename(filename, fullPath); err == nil { if err := os.Rename(filename, fullPath); err != nil {
return err
}
return nil return nil
}
// Can't rename, possibly because of a cross-link device issue. So copy instead
if err := moveFile(filename, fullPath); err != nil {
return err
}
return nil
}
func moveFile(src, dst string) error {
if err := copyFile(src, dst); err != nil {
_ = os.Remove(dst)
return err
}
_ = os.Remove(src)
return nil
}
func copyFile(src, dst string) error {
in, err := os.Open(src)
if err != nil {
return err
}
defer in.Close()
out, err := os.Create(dst)
if err != nil {
return err
}
defer out.Close()
if _, err = io.Copy(out, in); err != nil {
return err
}
return err
} }
func (p *Provider) OpenUpload(site models.Site, up models.Upload) (io.ReadCloser, error) { func (p *Provider) OpenUpload(site models.Site, up models.Upload) (io.ReadCloser, error) {

View file

@ -17,8 +17,6 @@ type CreatePostParams struct {
} }
func (s *Service) UpdatePost(ctx context.Context, params CreatePostParams) (*models.Post, error) { func (s *Service) UpdatePost(ctx context.Context, params CreatePostParams) (*models.Post, error) {
now := time.Now()
site, ok := models.GetSite(ctx) site, ok := models.GetSite(ctx)
if !ok { if !ok {
return nil, models.SiteRequiredError return nil, models.SiteRequiredError
@ -31,14 +29,14 @@ func (s *Service) UpdatePost(ctx context.Context, params CreatePostParams) (*mod
post.Title = params.Title post.Title = params.Title
post.Body = params.Body post.Body = params.Body
post.UpdatedAt = now post.UpdatedAt = time.Now()
post.Slug = post.BestSlug() post.Slug = post.BestSlug()
oldState := post.State oldState := post.State
switch strings.ToLower(params.Action) { switch strings.ToLower(params.Action) {
case "publish": case "publish":
post.State = models.StatePublished post.State = models.StatePublished
post.PublishedAt = now post.PublishedAt = time.Now()
case "save draft": case "save draft":
post.State = models.StateDraft post.State = models.StateDraft
post.PublishedAt = time.Time{} post.PublishedAt = time.Time{}