Many-to-one item note support in the schema and data layer -- still some issues on (I think) the interface side

This commit is contained in:
Dan Stillman 2006-06-16 07:32:48 +00:00
parent e417d8e690
commit fd85af40f8
3 changed files with 70 additions and 3 deletions

View file

@ -675,6 +675,62 @@ Scholar.Item.prototype.save = function(){
}
//
// Methods dealing with item notes
//
// save() is not required for note functions
//
/**
* Add a new note to an item and return the noteID
**/
Scholar.Item.prototype.addNote = function(text){
Scholar.DB.beginTransaction();
var noteID = Scholar.getRandomID('itemNotes', 'noteID', 65535);
var sql = "INSERT INTO itemNotes (noteID, itemID, note) VALUES (?,?,?)";
Scholar.DB.query(sql,
[{'int':noteID}, {'int':this.getID()}, {'string':text}]
);
Scholar.DB.commitTransaction();
return noteID;
}
/**
* Update an item note
**/
Scholar.Item.prototype.updateNote = function(noteID, text){
var sql = "UPDATE itemNotes SET note=? WHERE itemID=? AND noteID=?";
return Scholar.DB.query(sql,
[{'string':text}, {'int':this.getID()}, {'int':noteID}]
);
}
/**
* Delete an item note
**/
Scholar.Item.prototype.removeNote = function(noteID){
var sql = "DELETE FROM itemNotes WHERE itemID=" + this.getID()
+ " AND noteID=" + noteID;
return Scholar.DB.query(sql);
}
/**
* Get the text of an item note
**/
Scholar.Item.prototype.getNote = function(noteID){
var sql = "SELECT note FROM itemNotes WHERE itemID=" + this.getID()
+ " AND noteID=" + noteID;
return Scholar.DB.valueQuery(sql);
}
/**
* Returns an array of noteIDs for this item
**/
Scholar.Item.prototype.getNotes = function(){
var sql = "SELECT noteID FROM itemNotes WHERE itemID=" + this.getID();
return Scholar.DB.columnQuery(sql);
}
/**
* Delete item from database and clear from Scholar.Items internal array
**/

View file

@ -370,7 +370,7 @@ Scholar.Schema = new function(){
//
// Change this value to match the schema version
//
var toVersion = 19;
var toVersion = 20;
if (toVersion != _getSchemaSQLVersion()){
throw('Schema version does not match version in _migrateSchema()');
@ -385,7 +385,7 @@ Scholar.Schema = new function(){
// Each block performs the changes necessary to move from the
// previous revision to that one.
for (var i=parseInt(fromVersion) + 1; i<=toVersion; i++){
if (i==19){
if (i==20){
_initializeSchema();
}
}

View file

@ -1,4 +1,4 @@
-- 19
-- 20
DROP TABLE IF EXISTS version;
CREATE TABLE version (
@ -60,6 +60,17 @@
DROP INDEX IF EXISTS value;
CREATE INDEX value ON itemData(value);
DROP TABLE IF EXISTS itemNotes;
CREATE TABLE itemNotes (
noteID INT,
itemID INT,
note TEXT,
PRIMARY KEY (noteID),
FOREIGN KEY (itemID) REFERENCES items(itemID)
);
DROP INDEX IF EXISTS itemNotes_itemID;
CREATE INDEX itemNotes_itemID ON itemNotes(itemID);
DROP TABLE IF EXISTS keywords;
CREATE TABLE keywords (
keywordID INTEGER PRIMARY KEY,