Mercurial > snowl
changeset 168:cf4434b4dddc
basic support for people
author | Myk Melez <myk@mozilla.org> |
---|---|
date | Mon, 14 Jul 2008 23:45:49 -0700 |
parents | 66b70768d5be |
children | d5cc6dfafc40 |
files | extension/modules/identity.js |
diffstat | 1 files changed, 104 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/extension/modules/identity.js Mon Jul 14 23:45:49 2008 -0700 @@ -0,0 +1,104 @@ +const EXPORTED_SYMBOLS = ["SnowlIdentity", "SnowlPerson"]; + +const Cc = Components.classes; +const Ci = Components.interfaces; +const Cr = Components.results; +const Cu = Components.utils; + +Cu.import("resource://snowl/modules/datastore.js"); +Cu.import("resource://snowl/modules/source.js"); +Cu.import("resource://snowl/modules/URI.js"); + +function SnowlIdentity(id, sourceID, externalID, personID) { + this.id = id; + this.sourceID = sourceID; + this.externalID = externalID; + this.personID = personID; +} + +SnowlIdentity.get = function(sourceID, externalID) { + let identity; + + let statement = SnowlDatastore.createStatement( + "SELECT id, personID FROM identities WHERE externalID = :externalID AND sourceID = :sourceID" + ); + + try { + statement.params.sourceID = sourceID; + statement.params.externalID = externalID; + if (statement.step()) { + identity = new SnowlIdentity(statement.row.id, sourceID, externalID, statement.row.personID); + } + } + finally { + statement.reset(); + } + + return identity; +}; + +SnowlIdentity.create = function(sourceID, externalID, name) { + let identity; + + let personStatement = SnowlDatastore.createStatement( + "INSERT INTO people (name) VALUES (:name)" + ); + + let identityStatement = SnowlDatastore.createStatement( + "INSERT INTO identities (sourceID, externalID, personID) " + + "VALUES (:sourceID, :externalID, :personID)" + ); + + try { + personStatement.params.name = name; + personStatement.step(); + let personID = SnowlDatastore.dbConnection.lastInsertRowID; + + identityStatement.params.sourceID = sourceID; + identityStatement.params.externalID = externalID; + identityStatement.params.personID = personID; + identityStatement.step(); + let identityID = SnowlDatastore.dbConnection.lastInsertRowID; + + identity = new SnowlIdentity(identityID, sourceID, externalID, personID); + } + finally { + personStatement.reset(); + identityStatement.reset(); + } + + return identity; +}; + +SnowlIdentity.prototype = {}; + +function SnowlPerson(id, name) { + this.id = id; + this.name = name; +} + +SnowlPerson.__defineGetter__("_getAllStatement", + function() { + let statement = SnowlDatastore.createStatement( + "SELECT id, name FROM people ORDER BY name" + ); + this.__defineGetter__("_getAllStatement", function() { return statement }); + return this._getAllStatement; + } +); + +SnowlPerson.getAll = function() { + let people = []; + + let statement = this._getAllStatement; + + try { + while (statement.step()) + people.push(new SnowlPerson(statement.row.id, statement.row.name)); + } + finally { + statement.reset(); + } + + return people; +}