Skip to content

Instantly share code, notes, and snippets.

@telekosmos
Created February 13, 2015 11:45
Show Gist options
  • Save telekosmos/b8662752e20243efc1bb to your computer and use it in GitHub Desktop.
Save telekosmos/b8662752e20243efc1bb to your computer and use it in GitHub Desktop.
Promise-database prototype
Promise = require 'bluebird'
_ = require 'lodash'
jsonObj =
db:
host: "localhost",
name: "appform",
user: "gcomesana",
pwd: "appform"
,
server:
hostname: 'localhost'
,
dumps: [
prj: "Pangen-EU",
questionnaire: "QES_Spain",
group: "Spain",
section: 2,
rep: true,
out: ""
]
jsonStr = JSON.stringify jsonObj
FileReader = () ->
readFile = () ->
promiseFunc = (resolve, reject) ->
guard = Math.floor(Math.random()*10)
even = (guard % 2) == 0
setTimeout () ->
if even then resolve "#{jsonStr}" else reject "err of: #{guard}"
, 2000
deferred = new Promise(promiseFunc)
obj =
read: readFile
ParserJson = () ->
parse = () ->
promise = new Promise (resolve, reject) ->
guard = Math.floor(Math.random()*10)
even = (guard % 2) == 0
setTimeout () ->
if !even
resolve JSON.parse(jsonStr)
else
reject "parse json err: #{guard}"
, 2000
obj =
parse: parse
DBRetriever = () ->
obj = {}
sequelize = null
dbMock = # mocking reference to de database
prj: [
name: "PanGen"
id: 100
,
prj: "Cancer"
id: 101
]
,
group: [
name: "Spain"
id: 400
,
name: "Hospital"
id: 401
]
,
questionnaire: [
name: "QES"
id: 300
,
name: "IDC"
id: 303
]
connect = () ->
sequelize = dbMock
null
prjId = (prjName) ->
_.result(_.find(sequelize.prj, {name: prjName}), 'id')
grpId = (grpName) ->
_.result(_.find(sequelize.group, {name: grpName}), 'id')
intrvId = (intrvName) ->
_.result(_.find(sequelize.questionnaire, {name: intrvName}), 'id')
query = (what, name) ->
if sequelize?
switch what
when 'prj' then prjId name
when 'grp' then grpId name
when 'intrv' then intrvId name
else prjId name
else
undefined
obj =
connect: connect
getGrpId: (name) -> query 'grp', name
getPrjId: (name) -> query 'prj', name
getIntrvId: (name) -> query 'intrv', name
##############################
fr = new FileReader()
pj = new ParserJson()
console.log 'About to read.then(parse) a file...'
db = new DBRetriever()
# db.connect()
# grpId = db.getGrpId 'Spain'
# console.log "Id Group retrieved #{grpId} for Spain"
fr.read().then pj.parse
.then (val) ->
console.log val
db.connect()
dump = val.dumps[0]
grpId = db.getGrpId dump.group
.then (grpId) -> console.log "Then the retrieved group has id #{grpId}"
.catch (err) -> console.log "ERR: #{err}"
###
fr.read().then (val) ->
console.log "Success: #{val}"
,
(err) -> console.log "ERR: #{err}"
###
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment