// CreateFile creates a File in the provided Directory func CreateFile(d dir.Directory, name string) *File { f := &File{ uuid: uuid.NewV4(), name: name, } if d != nil { f.directory = d err := d.AttachFile(f) if err != nil { // TODO: decide how to handle err != nil; we would like CreateFile to be chainable, hence not returning err return nil } } return f }
// AttachDirectory adds a dir.Directory to this Directory // You likely would use the .Create() or .CreateDirectory() method instead, if available. func (d *Directory) AttachDirectory(dirIn dir.Directory) error { d.Lock() defer d.Unlock() for _, child := range d.children { if child == dirIn { return dir.ErrExists } } err := dirIn.SetRoot(d.root) if err != nil { return err } d.children = append(d.children, dirIn) return nil }
// CreateDirectory creates a sub-Directory of the provided Directory func CreateDirectory(d dir.Directory, name string) *Directory { subdir := &Directory{ uuid: uuid.NewV4(), name: name, } if d != nil { subdir.root = d.Root() subdir.parent = d err := d.AttachDirectory(subdir) if err != nil { // TODO: decide how to handle err != nil; we would like CreateDirectory to be chainable, hence not returning err return nil } } else { subdir.root = subdir } return subdir }