From d02619fdc288b4c858a371292be756532493c4ed 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 +- store/sqlite/guest_links.go | 4 ++-- .../migrations/008-migrate-to-guest-file-expiration.sql | 4 ---- store/sqlite/sqlite.go | 3 +++ 4 files changed, 6 insertions(+), 7 deletions(-) diff --git a/handlers/parse/guest_link.go b/handlers/parse/guest_link.go index 03650f1fe..6dfd8eeee 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/store/sqlite/guest_links.go b/store/sqlite/guest_links.go index d0a55b3fd..88a629fb7 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 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 658dc540d..1a0f419bf 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 80df71a30..02c582ab0 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)) }