You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
105 lines
2.4 KiB
105 lines
2.4 KiB
package model
|
|
|
|
type DiaryEntryNote struct {
|
|
Id int64 `json:"id"`
|
|
Body string `json:"body"`
|
|
CreatedAt int64 `json:"created_at"`
|
|
Version int64 `json:"version"`
|
|
LogId int64 `json:"log_id"`
|
|
}
|
|
|
|
func (app *App) NewDiaryEntryNote(entry_id int64, body string) *DiaryEntryNote {
|
|
var diary_entry_note DiaryEntryNote
|
|
|
|
var result, err = app.Db.Exec("INSERT INTO diary_log_note (body, log_id) values (?, ?);", body, entry_id)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
id, err := result.LastInsertId()
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
if err := app.Db.QueryRow(
|
|
"SELECT id, body, created_at, version, log_id FROM diary_log_note where id=?",
|
|
id,
|
|
).Scan(
|
|
&diary_entry_note.Id,
|
|
&diary_entry_note.Body,
|
|
&diary_entry_note.CreatedAt,
|
|
&diary_entry_note.Version,
|
|
&diary_entry_note.LogId,
|
|
); err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
return &diary_entry_note
|
|
}
|
|
|
|
func (app *App) GetDiaryEntryNotes(entry_id int64) []*DiaryEntryNote {
|
|
// not sure if it should be descending.
|
|
rows, err := app.Db.Query(
|
|
// The second ordering is necessary to break ties.
|
|
`SELECT id, body, created_at, version, log_id FROM diary_log_note WHERE log_id=?
|
|
ORDER BY created_at desc,
|
|
id desc`,
|
|
entry_id,
|
|
)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
defer rows.Close()
|
|
|
|
var result []*DiaryEntryNote
|
|
for rows.Next() {
|
|
var id, created_at, version, log_id int64
|
|
var body string
|
|
err := rows.Scan(&id, &body, &created_at, &version, &log_id)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
result = append(result, &DiaryEntryNote{
|
|
Id: id, Body: body, CreatedAt: created_at, Version: version, LogId: log_id,
|
|
})
|
|
}
|
|
if err := rows.Err(); err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
return result
|
|
}
|
|
|
|
func (app *App) DeleteDiaryEntryNote(note_id int64) (bool, error) {
|
|
result, err := app.Db.Exec("DELETE FROM diary_log_note where id=?", note_id)
|
|
if err != nil {
|
|
return false, err
|
|
}
|
|
|
|
num_rows_affected, err := result.RowsAffected()
|
|
if err != nil {
|
|
return false, err
|
|
}
|
|
if num_rows_affected == 0 {
|
|
return false, &NotFoundError{given_id: note_id}
|
|
}
|
|
return true, nil
|
|
}
|
|
|
|
func (app *App) DeleteNotesForDiaryEntry(entry_id int64) (bool, error) {
|
|
result, err := app.Db.Exec("DELETE FROM diary_log_note where log_id=?", entry_id)
|
|
if err != nil {
|
|
return false, err
|
|
}
|
|
|
|
num_rows_affected, err := result.RowsAffected()
|
|
if err != nil {
|
|
return false, err
|
|
}
|
|
if num_rows_affected == 0 {
|
|
// the entry had no notes!
|
|
return true, nil
|
|
}
|
|
return true, nil
|
|
}
|