1
0
Fork 0

Compare commits

...

9 Commits

7 changed files with 30 additions and 49 deletions

View File

@ -100,7 +100,7 @@ type SQLiteDatabase struct {
db *sql.DB
}
func New(filePath string) (*SQLiteDatabase, error) {
func New(filePath string) (guestbook.Guestbook, error) {
db, err := sql.Open("sqlite3", dsn(filePath))
if err != nil {
return nil, err
@ -205,8 +205,7 @@ func (d *SQLiteDatabase) NewEntry(entry *guestbook.Entry) error {
return nil
}
// UpdateEntry
func (d *SQLiteDatabase) UpdateEntry(entry *guestbook.Entry) error {
func (d *SQLiteDatabase) EditEntry(entry *guestbook.Entry) error {
tx, err := d.db.Begin()
if err != nil {
return err
@ -222,26 +221,20 @@ func (d *SQLiteDatabase) UpdateEntry(entry *guestbook.Entry) error {
return nil
}
func (d *SQLiteDatabase) DeleteEntry(entryID int64) (int64, error) {
func (d *SQLiteDatabase) DeleteEntry(entryID int64) error {
tx, err := d.db.Begin()
if err != nil {
return -1, err
return err
}
defer tx.Rollback()
res, err := tx.Stmt(stmtDeleteEntry).Exec(entryID)
if err != nil {
return -1, err
}
c, err := res.RowsAffected()
if err != nil {
return -1, err
if _, err = tx.Stmt(stmtDeleteEntry).Exec(entryID); err != nil {
return err
}
tx.Commit()
return c, nil
return nil
}
func (d *SQLiteDatabase) NewReply(reply *guestbook.Reply) error {
@ -261,15 +254,14 @@ func (d *SQLiteDatabase) NewReply(reply *guestbook.Reply) error {
return nil
}
func (d *SQLiteDatabase) UpdateReply(reply *guestbook.Reply) error {
func (d *SQLiteDatabase) EditReply(reply *guestbook.Reply) error {
tx, err := d.db.Begin()
if err != nil {
return err
}
defer tx.Rollback()
row := tx.Stmt(stmtUpdateReply).QueryRow(
reply.Created.Format(guestbook.DateFormat), reply.Message, reply.ID)
row := tx.Stmt(stmtUpdateReply).QueryRow(reply.Message, reply.ID)
if row.Err() != nil {
return row.Err()
}
@ -279,26 +271,20 @@ func (d *SQLiteDatabase) UpdateReply(reply *guestbook.Reply) error {
return nil
}
func (d *SQLiteDatabase) DeleteReply(entryID int64) (int64, error) {
func (d *SQLiteDatabase) DeleteReply(entryID int64) error {
tx, err := d.db.Begin()
if err != nil {
return -1, err
return err
}
defer tx.Rollback()
res, err := tx.Stmt(stmtDeleteReply).Exec(entryID)
if err != nil {
return -1, err
}
ra, err := res.RowsAffected()
if err != nil {
return -1, err
if _, err = tx.Stmt(stmtDeleteReply).Exec(entryID); err != nil {
return err
}
tx.Commit()
return ra, nil
return nil
}
func (d *SQLiteDatabase) Close() error {

View File

@ -13,7 +13,7 @@ const (
testRMsg = "lol"
)
func genTestDB() (db *sqlite.SQLiteDatabase, err error) {
func genTestDB() (db guestbook.Guestbook, err error) {
db, err = sqlite.New(":memory:")
if err != nil {
return nil, errors.Wrap(err, "failed to init DB")
@ -65,7 +65,7 @@ func TestSqliteInsertAndGetAll(t *testing.T) {
}
}
func TestSqliteUpdateEntry(t *testing.T) {
func TestSqliteEditEntry(t *testing.T) {
db, err := genTestDB()
if err != nil {
t.Error(err)
@ -86,13 +86,13 @@ func TestSqliteUpdateEntry(t *testing.T) {
me.ID = es0[0].ID
me.Name = "NotSoAnonymous"
err = db.UpdateEntry(me)
err = db.EditEntry(me)
if err != nil {
t.Error(err)
}
}
func TestSqliteUpdateReply(t *testing.T) {
func TestSqliteEditReply(t *testing.T) {
db, err := genTestDB()
if err != nil {
t.Error(err)
@ -113,7 +113,7 @@ func TestSqliteUpdateReply(t *testing.T) {
mr.ID = es0[0].ID
mr.Message = "bur"
err = db.UpdateReply(mr)
err = db.EditReply(mr)
if err != nil {
t.Error(err)
}
@ -130,13 +130,8 @@ func TestSqliteDeleteEntry(t *testing.T) {
}
}()
dc, err := db.DeleteEntry(1)
if err != nil {
t.Error("cannot delete entry", err, dc)
}
if c, err := db.Count(); err != nil || c != 0 {
t.Error(c, err, dc)
if err = db.DeleteEntry(1); err != nil {
t.Error("cannot delete entry", err)
}
}

View File

@ -1,2 +1,3 @@
SELECT COUNT(`entry_id`) AS `total`
SELECT
COUNT(`entry_id`) AS `total`
FROM `entry`;

View File

@ -3,11 +3,11 @@ SELECT
`entry`.`created`,
`entry`.`name`,
`entry`.`message`,
(CASE
CASE
WHEN `entry`.`hide_website` IS FALSE
THEN `entry`.`website`
ELSE ''
END) AS `website`,
END AS `website`,
`reply`.`created` AS `reply_created`,
`reply`.`message` AS `reply_message`
FROM `entry`

View File

@ -1,5 +1,4 @@
UPDATE OR REPLACE `reply`
SET
`created` = ?,
`message` = ?
WHERE `entry_id` = ?;

View File

@ -6,10 +6,10 @@ type Guestbook interface {
Entries(page, pageSize int64) ([]*Entry, error)
Count() (int64, error)
NewEntry(entry *Entry) error
UpdateEntry(entry *Entry) error
DeleteEntry(entryID int64) (int64, error)
EditEntry(entry *Entry) error
DeleteEntry(entryID int64) error
NewReply(reply *Reply) error
UpdateReply(reply *Reply) error
DeleteReply(entryID int64) (int64, error)
EditReply(reply *Reply) error
DeleteReply(entryID int64) error
Close() error
}

View File

@ -10,8 +10,8 @@ type Entry struct {
Created time.Time `json:"created"`
Name string `json:"name"`
Website string `json:"website,omitempty"`
Message string `json:"message"`
HideWebsite bool `json:"hide_website,omitempty"`
Message string `json:"message"`
Reply *Reply `json:"reply,omitempty"`
}