all repos — homestead @ 20dd619b8605660dac67fa435d711e5f22da3174

Code for my website

ensure reasonable ordering of declarations in source

Alan Pearce
commit

20dd619b8605660dac67fa435d711e5f22da3174

parent

6f41d182abaf1af16fd0cc697abf0f2e9ce54c5c

1 file changed, 80 insertions(+), 80 deletions(-)

changed files
M shared/storage/sqlite/writer.goshared/storage/sqlite/writer.go
@@ -27,11 +27,6 @@ "github.com/Southclaws/fault/fmsg"
_ "modernc.org/sqlite" // import registers db/SQL driver ) -var encodings = []string{"gzip", "br", "zstd"} - -//go:embed schema.sql -var schema string - type Writer struct { options *Options log *log.Logger
@@ -41,6 +36,12 @@
type Options struct { Compress bool } + +var ( + encodings = []string{"gzip", "br", "zstd"} + //go:embed schema.sql + schema string +) func OpenDB(dbPath string) (*sql.DB, error) { db, err := sql.Open(
@@ -80,81 +81,6 @@ func (s *Writer) Mkdirp(string) error {
return nil } -func (s *Writer) storeURL(path string) (int64, error) { - id, err := s.queries.InsertURL(context.TODO(), path) - if err != nil { - return 0, fault.Wrap(err, fmsg.With(fmt.Sprintf("inserting URL %s into database", path))) - } - - return id, nil -} - -func (s *Writer) storeFile(urlID int64, file *storage.File) (int64, error) { - if file.ContentType == "" { - file.ContentType = http.DetectContentType(file.Encodings["identity"].Bytes()) - s.log.Warn( - "file has no content type, sniffing", - "path", - file.Path, - "sniffed", - file.ContentType, - ) - } - params := db.InsertFileParams{ - UrlID: urlID, - ContentType: file.ContentType, - LastModified: file.LastModified.Unix(), - Etag: file.Etag, - Title: file.Title, - Headers: []byte{}, - } - if file.Headers != nil { - var err error - params.Headers, err = json.Marshal(file.Headers) - if err != nil { - return 0, fault.Wrap(err, fmsg.With("marshalling headers to JSON")) - } - } - id, err := s.queries.InsertFile(context.TODO(), params) - if err != nil { - return 0, fault.Wrap(err, fmsg.With("inserting file into database")) - } - - return id, nil -} - -func (s *Writer) storeEncoding(fileID int64, encoding string, data []byte) error { - err := s.queries.InsertContent(context.TODO(), db.InsertContentParams{ - Fileid: fileID, - Encoding: encoding, - Body: data, - }) - if err != nil { - return fault.Wrap( - err, - fmsg.With(fmt.Sprintf("inserting encoding into database file_id: %d encoding: %s", - fileID, - encoding)), - ) - } - - return nil -} - -func etag(content []byte) (string, error) { - hash := fnv.New64a() - _, err := hash.Write(content) - if err != nil { - return "", fault.Wrap(err) - } - - return fmt.Sprintf(`W/"%x"`, hash.Sum(nil)), nil -} - -func contentType(pathname string) string { - return mime.TypeByExtension(filepath.Ext(pathNameToFileName(pathname))) -} - func (s *Writer) NewFileFromPost(post *content.Post) *storage.File { file := &storage.File{ Title: post.Title,
@@ -272,3 +198,77 @@ }
return compressed, nil } +func (s *Writer) storeURL(path string) (int64, error) { + id, err := s.queries.InsertURL(context.TODO(), path) + if err != nil { + return 0, fault.Wrap(err, fmsg.With(fmt.Sprintf("inserting URL %s into database", path))) + } + + return id, nil +} + +func (s *Writer) storeFile(urlID int64, file *storage.File) (int64, error) { + if file.ContentType == "" { + file.ContentType = http.DetectContentType(file.Encodings["identity"].Bytes()) + s.log.Warn( + "file has no content type, sniffing", + "path", + file.Path, + "sniffed", + file.ContentType, + ) + } + params := db.InsertFileParams{ + UrlID: urlID, + ContentType: file.ContentType, + LastModified: file.LastModified.Unix(), + Etag: file.Etag, + Title: file.Title, + Headers: []byte{}, + } + if file.Headers != nil { + var err error + params.Headers, err = json.Marshal(file.Headers) + if err != nil { + return 0, fault.Wrap(err, fmsg.With("marshalling headers to JSON")) + } + } + id, err := s.queries.InsertFile(context.TODO(), params) + if err != nil { + return 0, fault.Wrap(err, fmsg.With("inserting file into database")) + } + + return id, nil +} + +func (s *Writer) storeEncoding(fileID int64, encoding string, data []byte) error { + err := s.queries.InsertContent(context.TODO(), db.InsertContentParams{ + Fileid: fileID, + Encoding: encoding, + Body: data, + }) + if err != nil { + return fault.Wrap( + err, + fmsg.With(fmt.Sprintf("inserting encoding into database file_id: %d encoding: %s", + fileID, + encoding)), + ) + } + + return nil +} + +func etag(content []byte) (string, error) { + hash := fnv.New64a() + _, err := hash.Write(content) + if err != nil { + return "", fault.Wrap(err) + } + + return fmt.Sprintf(`W/"%x"`, hash.Sum(nil)), nil +} + +func contentType(pathname string) string { + return mime.TypeByExtension(filepath.Ext(pathNameToFileName(pathname))) +}