Skip to content

Instantly share code, notes, and snippets.

@fmpwizard
Created March 23, 2013 04:08
Show Gist options
  • Select an option

  • Save fmpwizard/5226410 to your computer and use it in GitHub Desktop.

Select an option

Save fmpwizard/5226410 to your computer and use it in GitHub Desktop.
inventory connect related items
/**
* Add a related item, it connects both items on both sides of the relationship
*/
def connectRelatedBothWays(originKey: Long, relatedKey: Long) = {
connectRelated(originKey, relatedKey)
connectRelated(relatedKey, originKey)
}
/**
* Add a related item
*/
private def connectRelated(originKey: Long, relatedKey: Long) = {
val origin = Inventory.find(
By(Inventory.id, originKey)
)
val related = Inventory.find(
By(Inventory.id, relatedKey)
)
log.debug("we are saving %s and %s".format(origin, related))
for {
orig <- origin
rela <- related
} yield connectItem(orig, rela)
}
/**
* Add a "key" to the related item, but check for existing values
*/
private def connectItem(o: Inventory, r: Inventory) = {
val key = Helpers.nextFuncName
(o.relatedKey.is, r.relatedKey.is) match {
case ("", "") =>
o.relatedKey(key).save
r.relatedKey(key).save
case (orig, "") =>
r.relatedKey(orig).save
case ("", related) =>
o.relatedKey(related).save
case (orig, related) =>
r.relatedKey(orig).save
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment