Files
ledger-quicknote/user.go
2022-11-16 01:55:36 +08:00

53 lines
1.1 KiB
Go

package main
import (
"os"
"path"
)
type User struct {
IsLogin bool
Email string `form:"email" binding:"required"`
Password string `form:"password" binding:"required"`
}
func (u *User) Dir() string {
dir := path.Join(DATA_DIR, u.Email)
if err := os.MkdirAll(dir, 0755); err != nil {
panic(err)
}
return dir
}
func (u *User) FilePath(name string) string {
return path.Join(u.Dir(), name)
}
func (u *User) File(name string, mode int) (*os.File, error) {
return os.OpenFile(u.FilePath(name), mode, 0644)
}
func (u *User) AppendFile(name string) (*os.File, error) {
return u.File(name, os.O_WRONLY|os.O_CREATE|os.O_APPEND)
}
func (u *User) ReadFile(name string) (*os.File, error) {
return u.File(name, os.O_RDONLY|os.O_CREATE)
}
func (u *User) WriteFile(name string) (*os.File, error) {
return u.File(name, os.O_WRONLY|os.O_CREATE|os.O_TRUNC)
}
func (u *User) List() ([]string, error) {
files, err := os.ReadDir(u.Dir())
if err != nil {
panic(err)
}
result := make([]string, len(files))
for i, v := range files {
result[i] = v.Name()
}
return result, nil
}