Mercurial > pumpbridge
diff src/edge.coffee @ 0:b73191efc65b
Initial import of pumpbridge (bloody bloody alpha)
author | Mathias Gebbe <mgebbe@intevation.de> |
---|---|
date | Thu, 05 Jun 2014 10:35:15 +0200 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/edge.coffee Thu Jun 05 10:35:15 2014 +0200 @@ -0,0 +1,59 @@ +# edge.coffee +# +# A network edge between users in OStatus or pump.io graph +# +# Copyright 2013, E14N (https://e14n.com/) +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +_ = require("underscore") +async = require("async") +DatabankObject = require("databank").DatabankObject +Edge = DatabankObject.subClass("edge") + +Edge.schema = + pkey: "from_to" + fields: [ + "from" + "to" + "created" + "received" + ] + indices: [ + "from" + "to" + ] + +Edge.beforeCreate = (props, callback) -> + if not props.from or not props.to + callback new Error("Need 'from' and 'to' in an edge'"), null + return + props.from_to = Edge.key(props.from, props.to) + props.received = Date.now() + callback null, props + return + +Edge::beforeSave = (callback) -> + edge = this + if not edge.from or not edge.to + callback new Error("Need 'from' and 'to' in an edge'"), null + return + edge.from_to = Edge.key(edge.from, edge.to) + edge.received = Date.now() unless edge.received + callback null + return + +Edge.key = (fromId, toId) -> + fromId + "→" + toId + +module.exports = Edge