Fix unicode data update

This commit is contained in:
Daniele Tricoli 2017-10-28 15:05:34 +02:00
parent 98f7472127
commit 894dafeb33
3 changed files with 67 additions and 5 deletions

20
main.go
View file

@ -10,6 +10,7 @@ import (
"os"
"path"
"strings"
"time"
"github.com/Sirupsen/logrus"
"github.com/atotto/clipboard"
@ -75,14 +76,27 @@ func main() {
logrus.Fatal(err)
}
if err := store.DeleteUnicodeData(); err != nil {
logrus.Fatal(err)
}
if err := store.LoadFromRecords(records); err != nil {
logrus.Fatal(err)
}
if err := store.CreateLastUpdate(defaultDataFile,
modifiedTime); err != nil {
logrus.Fatal(err)
if lastUpdate == time.Unix(0, 0) {
if err := store.CreateLastUpdate(defaultDataFile,
modifiedTime); err != nil {
logrus.Fatal(err)
}
} else {
if err := store.UpdateLastUpdate(defaultDataFile,
modifiedTime); err != nil {
logrus.Fatal(err)
}
}
} else {
logrus.Info("Already up to date.")
}

View file

@ -54,7 +54,9 @@ const (
simple_lowercase_mapping,
simple_titlecase_mapping)
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`
deleteUdicodeData = `DELETE FROM unicode_data;`
createLastUpdateQuery = `INSERT INTO last_update (filename, date) VALUES (?, ?)`
updateLastUpdateQuery = `UPDATE last_update SET date = ? where filename = ?`
getLastUpdateQuery = `SELECT date FROM last_update WHERE filename = ?`
getUnicodeQuery = `SELECT * FROM unicode_data WHERE name MATCH ?`
countUnicodeQuery = `SELECT count(*) FROM unicode_data`
@ -147,6 +149,16 @@ func (s *Store) LoadFromRecords(records [][]string) error {
return nil
}
// DeleteUnicodeData removes all data from unicode_data table.
func (s *Store) DeleteUnicodeData() error {
_, err := s.db.Exec(deleteUdicodeData)
if err != nil {
return err
}
return nil
}
// Create latest update entry for given file.
func (s *Store) CreateLastUpdate(filename string, t time.Time) error {
@ -157,6 +169,16 @@ func (s *Store) CreateLastUpdate(filename string, t time.Time) error {
return err
}
// UpdateLastUpdate updates date entry for given file.
func (s *Store) UpdateLastUpdate(filename string, t time.Time) error {
ts := t.Format(time.RFC3339)
_, err := s.db.Exec(updateLastUpdateQuery, ts, filename)
return err
}
// Get latest update for given file.
func (s *Store) GetLastUpdate(filename string) (time.Time, error) {
var t string

View file

@ -98,17 +98,26 @@ func TestLastUpdate(t *testing.T) {
defer os.RemoveAll(dirName)
defer store.Close()
const timeForm = "2006-Jan-02"
updateTime, err := store.GetLastUpdate("test.txt")
if err != nil {
assert.Error(t, err)
}
assert.Equal(t, updateTime, time.Unix(0, 0))
testTime, _ := time.Parse("2006-Jan-02", "1993-Jan-25")
testTime, _ := time.Parse(timeForm, "1993-Jan-25")
if err := store.CreateLastUpdate("test.txt", testTime); err != nil {
assert.Error(t, err)
}
updateTime, err = store.GetLastUpdate("test.txt")
updateTime, _ = store.GetLastUpdate("test.txt")
assert.Equal(t, updateTime, testTime)
testTime, _ = time.Parse(timeForm, "2001-Feb-08")
if err := store.UpdateLastUpdate("test.txt", testTime); err != nil {
assert.Error(t, err)
}
updateTime, _ = store.GetLastUpdate("test.txt")
assert.Equal(t, updateTime, testTime)
}
@ -130,3 +139,20 @@ func TestLoadFromRecords(t *testing.T) {
assert.Equal(t, store.CountUnicodeData(), 3)
}
func TestDeleteUnicodeData(t *testing.T) {
dirName, err := store.init()
if err != nil {
assert.Error(t, err)
}
defer os.RemoveAll(dirName)
defer store.Close()
store.fixture()
assert.Equal(t, store.CountUnicodeData(), 3)
store.DeleteUnicodeData()
assert.Equal(t, store.CountUnicodeData(), 0)
}