diff options
| author | Max Resnick <max@ofmax.li> | 2020-04-19 23:13:51 -0700 |
|---|---|---|
| committer | Max Resnick <max@ofmax.li> | 2020-05-21 22:24:27 -0700 |
| commit | 4e77ad5762539d8f9edf40d2668a998c38e834d3 (patch) | |
| tree | 91da3dfce1fa77ee04aa9045908f6142712d60f5 /internal/image/service.go | |
| parent | ff1a5122005017d729fea29ec86851609d2991b8 (diff) | |
| download | iserv-4e77ad5762539d8f9edf40d2668a998c38e834d3.tar.gz | |
post w/ some meta working
Diffstat (limited to 'internal/image/service.go')
| -rw-r--r-- | internal/image/service.go | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/internal/image/service.go b/internal/image/service.go new file mode 100644 index 0000000..dabbfe7 --- /dev/null +++ b/internal/image/service.go @@ -0,0 +1,55 @@ +package image + +import ( + "io/ioutil" + "log" + "path" + "time" + + "github.com/matoous/go-nanoid" +) + +// Servicer image management +type Servicer interface { + NewID() (string, error) + AddFile(filename string, fileBytes []byte) error +} + +// NewService new image service +func NewService(repo Repo, storagePath string) *Service { + return &Service{repo, + storagePath, + } +} + +// Service a container for working with images +type Service struct { + db Repo + storagePath string +} + +// NewID create an uniqueish ID +func (is *Service) NewID() (string, error) { + return gonanoid.Nanoid() +} + +// AddFile writes to disk, writes meta to db +func (is *Service) AddFile(fileName string, fileBytes []byte) error { + filePath := path.Join(is.storagePath, fileName) + if err := ioutil.WriteFile(filePath, fileBytes, 0750); err != nil { + log.Fatal(err) + return err + } + t := time.Now().UTC() + postMeta := &PostMeta{ + FilePath: fileName, + CreatedAt: t.Format(time.RFC3339), + UserID: "1", + } + is.db.AddNewFile(fileName, postMeta, 946080000) + if err := is.db.AddNewFile(fileName, postMeta, 946080000); err != nil { + log.Fatal(err) + return err + } + return nil +} |