Created
March 23, 2013 04:08
-
-
Save fmpwizard/5226410 to your computer and use it in GitHub Desktop.
inventory connect related items
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| /** | |
| * 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