Add migration script
This commit is contained in:
		
							parent
							
								
									8113c52073
								
							
						
					
					
						commit
						16339188a5
					
				
					 1 changed files with 44 additions and 0 deletions
				
			
		
							
								
								
									
										44
									
								
								tools/migration/node.2018-03-13.othello.js
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										44
									
								
								tools/migration/node.2018-03-13.othello.js
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,44 @@
 | 
			
		|||
// for Node.js interpret
 | 
			
		||||
 | 
			
		||||
const { default: Othello } = require('../../built/api/models/othello-game')
 | 
			
		||||
const { default: zip } = require('@prezzemolo/zip')
 | 
			
		||||
 | 
			
		||||
const migrate = async (doc) => {
 | 
			
		||||
	const x = {};
 | 
			
		||||
 | 
			
		||||
	doc.logs.forEach(log => {
 | 
			
		||||
		log.color = log.color == 'black';
 | 
			
		||||
	});
 | 
			
		||||
 | 
			
		||||
	const result = await Othello.update(doc._id, {
 | 
			
		||||
		$set: doc.logs
 | 
			
		||||
	});
 | 
			
		||||
 | 
			
		||||
	return result.ok === 1;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
async function main() {
 | 
			
		||||
 | 
			
		||||
	const count = await Othello.count({});
 | 
			
		||||
 | 
			
		||||
	const dop = Number.parseInt(process.argv[2]) || 5
 | 
			
		||||
	const idop = ((count - (count % dop)) / dop) + 1
 | 
			
		||||
 | 
			
		||||
	return zip(
 | 
			
		||||
		1,
 | 
			
		||||
		async (time) => {
 | 
			
		||||
			console.log(`${time} / ${idop}`)
 | 
			
		||||
			const doc = await Othello.find({}, {
 | 
			
		||||
				limit: dop, skip: time * dop
 | 
			
		||||
			})
 | 
			
		||||
			return Promise.all(doc.map(migrate))
 | 
			
		||||
		},
 | 
			
		||||
		idop
 | 
			
		||||
	).then(a => {
 | 
			
		||||
		const rv = []
 | 
			
		||||
		a.forEach(e => rv.push(...e))
 | 
			
		||||
		return rv
 | 
			
		||||
	})
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
main().then(console.dir).catch(console.error)
 | 
			
		||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue