Skip to content

Instantly share code, notes, and snippets.

@DrBoolean
Created January 19, 2017 21:52
Show Gist options
  • Star 4 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save DrBoolean/1c9dc38e14e0499f29b4b1aac4f76bd9 to your computer and use it in GitHub Desktop.
Save DrBoolean/1c9dc38e14e0499f29b4b1aac4f76bd9 to your computer and use it in GitHub Desktop.
const {Map} = require('immutable-ext')
const Id = require('fantasy-identities')
const Task = require('data.task')
const defs = {
Band: {
dino_jr: {
name: 'Dinosaur Jr',
members: 3,
},
amanset: {
name: 'American Analog Set',
members: 7
}
},
Event: {
dino_stubbs: {
band_id: 'Band.dino_jr.id',
venue_id: 'Venue.stubbs.id',
age_limit: 18,
date: '4/12/16'
}
},
Venue: {
stubbs: {
name: 'Stubbs',
address: '801 Red River St'
},
independent: {
name: 'The Independent',
address: '628 Divisadero'
}
}
}
const createRecord = tablename => attrs =>
Id.of(Object.assign({id: Math.random(2)}, attrs))
const associateRels = fixtures => instance =>
instance
.traverse(Id.of, (v, k) =>
k.match(/_id$/ig)
? Id.of('finding in fixtures and updating db')
: Id.of(v))
const makeFixtures = defs =>
Map(defs)
.traverse(Id.of, (instances, tablename) =>
Map(instances).traverse(Id.of, createRecord(tablename)))
.chain(fixs =>
fixs.traverse(Id.of, instances =>
Map(instances).traverse(Id.of, associateRels(fixs))))
console.log(makeFixtures(defs).x.toJS())
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment