iw/app/models/lock.go

58 lines
1.3 KiB
Go
Raw Normal View History

2014-06-17 13:54:21 -05:00
package models
import (
"time"
"github.com/revel/revel"
)
type Lock struct {
Target_id string
Wiki_id string
Username string
Realname string
Modified time.Time
}
// Sets modified time
func (l Lock) Save() {
revel.TRACE.Printf("Lock Save(): %+v", l)
db := get_db()
defer db.Close()
_, err := db.Exec("insert into locks(wiki_id, target_id, username, realname, modified) values ($1, $2, $3, $4, $5)",
l.Wiki_id, l.Target_id, l.Username, l.Realname, time.Now())
if err != nil {
revel.ERROR.Printf("Lock Save(): failed with %+v", err)
}
}
// Deletes by target and wiki id
func (l Lock) Delete() {
revel.TRACE.Printf("Lock Delete(): %+v", l)
db := get_db()
defer db.Close()
_, err := db.Exec("delete from locks where wiki_id=uuid_in($1) and target_id=uuid_in($2)",
l.Wiki_id, l.Target_id)
if err != nil {
revel.ERROR.Printf("Lock Delete(): failed with %+v", err)
}
}
func GetLock(wiki string, target string) Lock {
revel.TRACE.Printf("GetLock(): target: %+v wiki: %+v", target, wiki)
locks := []Lock{}
lock := Lock{}
db := get_db()
defer db.Close()
db.Select(&locks, "select * from locks where wiki_id=uuid_in($1) and target_id=uuid_in($2)",
wiki, target)
if len(locks)>0 {
lock = locks[0]
}
return lock
}