35 lines
882 B
Lua
35 lines
882 B
Lua
local re = require "re"
|
|
local path = require "path"
|
|
|
|
local filenameRegex = re.compile([=[^([0-9]+).*\.sql$]=])
|
|
|
|
local function migrate()
|
|
local migrations = {}
|
|
local seqnums = {}
|
|
local paths = GetZipPaths("/migrations/")
|
|
for _, p in ipairs(paths) do
|
|
-- basename -> sequence number
|
|
-- check that sequence number doesn't already exist
|
|
local basename = path.basename(p)
|
|
local _, seqnum = filenameRegex:search(basename)
|
|
seqnum = tonumber(seqnum)
|
|
if seqnum and not seqnums[seqnum] then
|
|
table.insert(seqnums, seqnum)
|
|
table.insert(migrations, {
|
|
filename = p,
|
|
seqnum = seqnum,
|
|
})
|
|
else
|
|
print(string.format("found weird migration name: %s", p))
|
|
end
|
|
end
|
|
|
|
table.sort(migrations, function(a, b) return a.seqnum < b.seqnum end)
|
|
for i,mig in ipairs(migrations) do
|
|
print(string.format("%d: %s", i, mig.filename))
|
|
end
|
|
end
|
|
|
|
return {
|
|
migrate = migrate,
|
|
} |