fix migrate

This commit is contained in:
jysperm
2014-10-31 21:47:41 +08:00
parent b3f3429250
commit 5b33667a00
2 changed files with 31 additions and 22 deletions

View File

@@ -12,26 +12,38 @@ config = require '../config'
{user, password, host, name} = config.mongodb
mongodb_uri = "mongodb://#{user}:#{password}@#{host}/#{name}"
latest_version = require('../package.json').version
migrations = _.map fs.readdirSync("#{__dirname}/database"), (filename) ->
return filename.match(/v(\d+\.\d+\.\d+)\.coffee/)[1]
migrations.sort (a, b) ->
if semver.gt a, b
return 1
if semver.lt a, b
return -1
return 0
MongoClient.connect mongodb_uri, (err, db) ->
throw err if err
migrations = _.map fs.readdirSync("#{__dirname}/database"), (filename) ->
return filename.match(/v(\d+\.\d+\.\d+)\.coffee/)[1]
cOption = db.collection 'options'
migrations.sort (a, b) ->
if semver.gt a, b
return 1
if semver.lt a, b
return -1
return 0
db.collection('options').findOne
cOption.findOne
key: 'db_version'
, (err, result) ->
latest_version = require('../package.json').version
current_version = result?.version ? latest_version
, (err, db_version) ->
unless db_version
return cOption.insert
key: 'db_version'
version: latest_version
, (err) ->
throw err if err
console.log 'Created migration data'
process.exit 0
current_version = db_version.version
async.eachSeries migrations, (migration, callback) ->
if semver.gt(migration, current_version) and semver.lte(migration, latest_version)
@@ -43,12 +55,9 @@ MongoClient.connect mongodb_uri, (err, db) ->
db.collection('options').update
key: 'db_version'
,
key: 'db_version'
version: migration
,
upsert: true
, (err) ->
callback err
$set:
version: migration
, callback
else
callback()

View File

@@ -4,7 +4,7 @@ if process.env.COV_TEST == 'true'
require('coffee-coverage').register
path: 'relative'
basePath: "#{__dirname}/../.."
exclude: ['test', 'node_modules', '.git', 'sample', 'core/static']
exclude: ['test', 'node_modules', '.git', 'sample', 'core/static', 'migration/database']
global._ = require 'underscore'
global.fs = require 'fs'