Fix unicode data update
This commit is contained in:
parent
98f7472127
commit
894dafeb33
20
main.go
20
main.go
|
@ -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.")
|
||||
}
|
||||
|
|
22
sql/sql.go
22
sql/sql.go
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue