Skip to content

Commit 8fe1832

Browse files
committed
use ExpirationTime instead of string
1 parent a8cb111 commit 8fe1832

File tree

4 files changed

+43
-7
lines changed

4 files changed

+43
-7
lines changed

handlers/guest_links_test.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ func TestGuestLinksPostAcceptsValidRequest(t *testing.T) {
3535
expected: picoshare.GuestLink{
3636
Label: picoshare.GuestLinkLabel(""),
3737
UrlExpires: mustParseExpirationTime("2030-01-02T03:04:25Z"),
38-
FileExpires: mustParseExpirationTime("2030-01-02T03:04:25Z"),
38+
FileExpires: mustParseExpirationTime("2999-12-31T00:00:00Z"),
3939
MaxFileBytes: picoshare.GuestUploadUnlimitedFileSize,
4040
MaxFileUploads: picoshare.GuestUploadUnlimitedFileUploads,
4141
},
@@ -52,7 +52,7 @@ func TestGuestLinksPostAcceptsValidRequest(t *testing.T) {
5252
expected: picoshare.GuestLink{
5353
Label: picoshare.GuestLinkLabel("For my good pal, Maurice"),
5454
UrlExpires: mustParseExpirationTime("2030-01-02T03:04:25Z"),
55-
FileExpires: mustParseExpirationTime("2030-01-02T03:04:25Z"),
55+
FileExpires: mustParseExpirationTime("2999-12-31T00:00:00Z"),
5656
MaxFileBytes: makeGuestUploadMaxFileBytes(1048576),
5757
MaxFileUploads: makeGuestUploadCountLimit(1),
5858
},

handlers/views.go

+12
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,18 @@ func (s Server) guestLinkIndexGet() http.HandlerFunc {
8787
}
8888
return fmt.Sprintf("%s (%.0f days%s)", t.Format(time.DateOnly), math.Abs(delta.Hours())/24, suffix)
8989
},
90+
"formatFileExpiration": func(et picoshare.ExpirationTime) string {
91+
if et == picoshare.NeverExpire {
92+
return "Never"
93+
}
94+
t := time.Time(et)
95+
letterS := "s"
96+
delta := time.Until(t)
97+
if delta.Hours() < 25 {
98+
letterS = ""
99+
}
100+
return fmt.Sprintf("After %.0f day%s", math.Abs(delta.Hours())/24, letterS)
101+
},
90102
"isActive": func(gl picoshare.GuestLink) bool {
91103
return gl.IsActive()
92104
},

store/sqlite/guest_links.go

+3-5
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@ func (s Store) GetGuestLinks() ([]picoshare.GuestLink, error) {
6969

7070
func (s *Store) InsertGuestLink(guestLink picoshare.GuestLink) error {
7171
log.Printf("saving new guest link %s", guestLink.ID)
72+
log.Printf("guestLink %v", guestLink)
7273

7374
if _, err := s.ctx.Exec(`
7475
INSERT INTO guest_links
@@ -89,7 +90,7 @@ func (s *Store) InsertGuestLink(guestLink picoshare.GuestLink) error {
8990
sql.Named("max_file_uploads", guestLink.MaxFileUploads),
9091
sql.Named("creation_time", formatTime(time.Now())),
9192
sql.Named("url_expiration_time", formatExpirationTime(guestLink.UrlExpires)),
92-
sql.Named("file_expiration_time", formatExpirationTime(guestLink.FileExpires))); err != nil {
93+
sql.Named("file_expiration_time", formatFileExpirationTime(guestLink.FileExpires))); err != nil {
9394
return err
9495
}
9596

@@ -154,10 +155,7 @@ func guestLinkFromRow(row rowScanner) (picoshare.GuestLink, error) {
154155
return picoshare.GuestLink{}, err
155156
}
156157

157-
fet, err := parseDatetime(fileExpirationTimeRaw)
158-
if err != nil {
159-
return picoshare.GuestLink{}, err
160-
}
158+
fet := parseFileDatetime(fileExpirationTimeRaw)
161159

162160
return picoshare.GuestLink{
163161
ID: id,

store/sqlite/sqlite.go

+26
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@ package sqlite
22

33
import (
44
"database/sql"
5+
"fmt"
56
"log"
7+
"math"
68
"time"
79

810
_ "github.com/mattn/go-sqlite3"
@@ -66,6 +68,11 @@ func NewWithChunkSize(path string, chunkSize int, optimizeForLitestream bool) St
6668
}
6769
}
6870

71+
func formatFileExpirationTime(et picoshare.ExpirationTime) string {
72+
delta := time.Until(time.Time(et))
73+
return fmt.Sprintf("%.0f", math.Abs(delta.Hours())/24)
74+
}
75+
6976
func formatExpirationTime(et picoshare.ExpirationTime) string {
7077
return formatTime(time.Time(et))
7178
}
@@ -74,6 +81,25 @@ func formatTime(t time.Time) string {
7481
return t.UTC().Format(timeFormat)
7582
}
7683

84+
func parseFileDatetime(s string) time.Time {
85+
log.Printf("asadsasdasdsad")
86+
t := time.Now()
87+
switch s {
88+
case "1":
89+
t = t.AddDate(0, 0, 1)
90+
case "7":
91+
t = t.AddDate(0, 0, 7)
92+
case "30":
93+
t = t.AddDate(0, 0, 30)
94+
case "365":
95+
t = t.AddDate(1, 0, 0)
96+
default:
97+
t = time.Time(picoshare.NeverExpire)
98+
}
99+
100+
return t
101+
}
102+
77103
func parseDatetime(s string) (time.Time, error) {
78104
return time.Parse(timeFormat, s)
79105
}

0 commit comments

Comments
 (0)