return nil
}
func (f *File ) First () (version uint , err error ) {
if v , ok := f .migrations .First (); ok {
return v , nil
}
return 0 , &os .PathError {Op : "first" , Path : f .path , Err : os .ErrNotExist }
}
func (f *File ) Prev (version uint ) (prevVersion uint , err error ) {
if v , ok := f .migrations .Prev (version ); ok {
return v , nil
}
return 0 , &os .PathError {Op : fmt .Sprintf ("prev for version %v" , version ), Path : f .path , Err : os .ErrNotExist }
}
func (f *File ) Next (version uint ) (nextVersion uint , err error ) {
if v , ok := f .migrations .Next (version ); ok {
return v , nil
}
return 0 , &os .PathError {Op : fmt .Sprintf ("next for version %v" , version ), Path : f .path , Err : os .ErrNotExist }
}
func (f *File ) ReadUp (version uint ) (r io .ReadCloser , identifier string , err error ) {
if m , ok := f .migrations .Up (version ); ok {
r , err := os .Open (path .Join (f .path , m .Raw ))
if err != nil {
return nil , "" , err
}
return r , m .Identifier , nil
}
return nil , "" , &os .PathError {Op : fmt .Sprintf ("read version %v" , version ), Path : f .path , Err : os .ErrNotExist }
}
func (f *File ) ReadDown (version uint ) (r io .ReadCloser , identifier string , err error ) {
if m , ok := f .migrations .Down (version ); ok {
r , err := os .Open (path .Join (f .path , m .Raw ))
if err != nil {
return nil , "" , err
}
return r , m .Identifier , nil
}
return nil , "" , &os .PathError {Op : fmt .Sprintf ("read version %v" , version ), Path : f .path , Err : os .ErrNotExist }