package uploadfiles import ( "fmt" "os" "path/filepath" "lmika.dev/lmika/weiro/models" ) type Provider struct { baseDir string } func New(baseDir string) *Provider { return &Provider{ baseDir: baseDir, } } func (p *Provider) AdoptFile(site models.Site, up models.Upload, filename string) error { baseDir := filepath.Join(p.baseDir, site.GUID, fmt.Sprintf("%04d", up.CreatedAt.Year()), fmt.Sprintf("%02d", up.CreatedAt.Month())) if err := os.MkdirAll(baseDir, 0755); err != nil { return err } targetFilename := filepath.Join(baseDir, up.GUID) if err := os.Rename(filename, targetFilename); err != nil { return err } return nil }