(dir http.FileSystem, root string)
| 256 | } |
| 257 | |
| 258 | func findMigrations(dir http.FileSystem, root string) ([]*Migration, error) { |
| 259 | migrations := make([]*Migration, 0) |
| 260 | |
| 261 | file, err := dir.Open(root) |
| 262 | if err != nil { |
| 263 | return nil, err |
| 264 | } |
| 265 | |
| 266 | files, err := file.Readdir(0) |
| 267 | if err != nil { |
| 268 | return nil, err |
| 269 | } |
| 270 | |
| 271 | for _, info := range files { |
| 272 | if strings.HasSuffix(info.Name(), ".sql") { |
| 273 | migration, err := migrationFromFile(dir, root, info) |
| 274 | if err != nil { |
| 275 | return nil, err |
| 276 | } |
| 277 | |
| 278 | migrations = append(migrations, migration) |
| 279 | } |
| 280 | } |
| 281 | |
| 282 | // Make sure migrations are sorted |
| 283 | sort.Sort(byId(migrations)) |
| 284 | |
| 285 | return migrations, nil |
| 286 | } |
| 287 | |
| 288 | func migrationFromFile(dir http.FileSystem, root string, info os.FileInfo) (*Migration, error) { |
| 289 | path := path.Join(root, info.Name()) |
no test coverage detected
searching dependent graphs…