@nuxthub/core-nightly
Version:
Build full-stack Nuxt applications, with zero configuration.
35 lines (30 loc) • 937 B
JavaScript
import { join } from 'pathe'
import { createStorage } from 'unstorage'
import fsDriver from 'unstorage/drivers/fs'
let _storage
export function useMigrationsStorage() {
if (!_storage) {
const cwd = process.cwd()
const migrationsDir = join(cwd, 'server/database/migrations')
_storage = createStorage({
driver: fsDriver({
base: migrationsDir,
ignore: ['.DS_Store']
})
})
}
return _storage
}
export async function getMigrationFiles() {
const fileKeys = await useMigrationsStorage().getKeys()
return fileKeys.filter(file => file.endsWith('.sql'))
}
export async function getNextMigrationNumber() {
const files = await getMigrationFiles()
const lastSequentialMigrationNumber = files
.map(file => file.split('_')[0])
.map(num => Number.parseInt(num, 10))
.sort((a, b) => a - b)
.pop() ?? 0
return (lastSequentialMigrationNumber + 1).toString().padStart(4, '0')
}