From d70047c724833b9c274317cb73673093be58854b Mon Sep 17 00:00:00 2001 From: Balkaneser <43721713+Balk-Z@users.noreply.github.com> Date: Sat, 7 Dec 2024 17:08:00 +0100 Subject: [PATCH] ensure databases lacking file_expiration_time values report correct value --- handlers/parse/guest_link.go | 2 +- handlers/views.go | 6 +++++- store/sqlite/guest_links.go | 5 ++--- .../migrations/008-migrate-to-guest-file-expiration.sql | 4 ---- store/sqlite/sqlite.go | 3 +++ 5 files changed, 11 insertions(+), 9 deletions(-) diff --git a/handlers/parse/guest_link.go b/handlers/parse/guest_link.go index 03650f1f..6dfd8eee 100644 --- a/handlers/parse/guest_link.go +++ b/handlers/parse/guest_link.go @@ -26,7 +26,7 @@ func GuestLinkLabel(label string) (picoshare.GuestLinkLabel, error) { } func GuestFileLifeTime(fileLifeTimeRaw string) (picoshare.FileLifetime, error) { - t, err := time.Parse(expirationTimeFormat, fileLifeTimeRaw) //do the error handling + t, err := time.Parse(expirationTimeFormat, fileLifeTimeRaw) if err != nil { return picoshare.FileLifetime{}, ErrExpirationUnrecognizedFormat } diff --git a/handlers/views.go b/handlers/views.go index 2052329b..21319e33 100644 --- a/handlers/views.go +++ b/handlers/views.go @@ -92,7 +92,11 @@ func (s Server) guestLinkIndexGet() http.HandlerFunc { return "Never" } - return fmt.Sprintf("After %.0f hours", flt.Duration().Hours()) + letterS := "s" + if flt.Duration().Hours() < 25 { + letterS = "" + } + return fmt.Sprintf("After %.0f day%s", math.Abs(flt.Duration().Hours()/24), letterS) }, "isActive": func(gl picoshare.GuestLink) bool { return gl.IsActive() diff --git a/store/sqlite/guest_links.go b/store/sqlite/guest_links.go index d0a55b3f..d08e43bd 100644 --- a/store/sqlite/guest_links.go +++ b/store/sqlite/guest_links.go @@ -19,7 +19,7 @@ func (s Store) GetGuestLink(id picoshare.GuestLinkID) (picoshare.GuestLink, erro guest_links.max_file_uploads AS max_file_uploads, guest_links.creation_time AS creation_time, guest_links.url_expiration_time AS url_expiration_time, - guest_links.file_expiration_time AS file_expiration_time, + CASE WHEN guest_links.file_expiration_time IS NULL THEN 'NULL' ELSE guest_links.file_expiration_time END AS file_expiration_time, SUM(CASE WHEN entries.id IS NOT NULL THEN 1 ELSE 0 END) AS entry_count FROM guest_links @@ -42,7 +42,7 @@ func (s Store) GetGuestLinks() ([]picoshare.GuestLink, error) { guest_links.max_file_uploads AS max_file_uploads, guest_links.creation_time AS creation_time, guest_links.url_expiration_time AS url_expiration_time, - guest_links.file_expiration_time AS file_expiration_time, + CASE WHEN guest_links.file_expiration_time IS NULL THEN 'NULL' ELSE guest_links.file_expiration_time END AS file_expiration_time, SUM(CASE WHEN entries.id IS NOT NULL THEN 1 ELSE 0 END) AS entry_count FROM guest_links @@ -69,7 +69,6 @@ func (s Store) GetGuestLinks() ([]picoshare.GuestLink, error) { func (s *Store) InsertGuestLink(guestLink picoshare.GuestLink) error { log.Printf("saving new guest link %s", guestLink.ID) - log.Printf("guestLink %v", guestLink) if _, err := s.ctx.Exec(` INSERT INTO guest_links diff --git a/store/sqlite/migrations/008-migrate-to-guest-file-expiration.sql b/store/sqlite/migrations/008-migrate-to-guest-file-expiration.sql index 658dc540..1a0f419b 100644 --- a/store/sqlite/migrations/008-migrate-to-guest-file-expiration.sql +++ b/store/sqlite/migrations/008-migrate-to-guest-file-expiration.sql @@ -3,7 +3,3 @@ RENAME COLUMN expiration_time TO url_expiration_time; ALTER TABLE guest_links ADD file_expiration_time TEXT; - -UPDATE guest_links -SET file_expiration_time = 'NEVER' -WHERE file_expiration_time IS NULL; diff --git a/store/sqlite/sqlite.go b/store/sqlite/sqlite.go index 80df71a3..02c582ab 100644 --- a/store/sqlite/sqlite.go +++ b/store/sqlite/sqlite.go @@ -76,6 +76,9 @@ func formatTime(t time.Time) string { } func parseFileDatetime(s string) (time.Duration, error) { + if s == "NULL" { + return picoshare.FileLifetimeInfinite.Duration(), nil + } return time.ParseDuration(fmt.Sprintf("%sh", s)) }