mirror of https://github.com/stashapp/stash.git
52 lines
968 B
Go
52 lines
968 B
Go
package models
|
|
|
|
import (
|
|
"fmt"
|
|
"io"
|
|
"io/fs"
|
|
"strconv"
|
|
"time"
|
|
)
|
|
|
|
// FolderID represents an ID of a folder.
|
|
type FolderID int32
|
|
|
|
// String converts the ID to a string.
|
|
func (i FolderID) String() string {
|
|
return strconv.Itoa(int(i))
|
|
}
|
|
|
|
func (i *FolderID) UnmarshalGQL(v interface{}) (err error) {
|
|
switch v := v.(type) {
|
|
case string:
|
|
var id int
|
|
id, err = strconv.Atoi(v)
|
|
*i = FolderID(id)
|
|
return err
|
|
case int:
|
|
*i = FolderID(v)
|
|
return nil
|
|
default:
|
|
return fmt.Errorf("%T is not an int", v)
|
|
}
|
|
}
|
|
|
|
func (i FolderID) MarshalGQL(w io.Writer) {
|
|
fmt.Fprint(w, strconv.Quote(i.String()))
|
|
}
|
|
|
|
// Folder represents a folder in the file system.
|
|
type Folder struct {
|
|
ID FolderID `json:"id"`
|
|
DirEntry
|
|
Path string `json:"path"`
|
|
ParentFolderID *FolderID `json:"parent_folder_id"`
|
|
|
|
CreatedAt time.Time `json:"created_at"`
|
|
UpdatedAt time.Time `json:"updated_at"`
|
|
}
|
|
|
|
func (f *Folder) Info(fs FS) (fs.FileInfo, error) {
|
|
return f.info(fs, f.Path)
|
|
}
|