Handle zip file modification (#877)

* Rescan zip if updating mod time
* Use inequality for mod time comparison
* Add sort by file_mod_time (fixes #469)
This commit is contained in:
WithoutPants
2020-11-05 10:26:51 +11:00
committed by GitHub
parent 9ec762ae9a
commit 5f482b7b8a
20 changed files with 612 additions and 163 deletions

View File

@@ -414,51 +414,39 @@ func sqlGenKeys(i interface{}, partial bool) string {
if key == "id" {
continue
}
var add bool
switch t := v.Field(i).Interface().(type) {
case string:
if partial || t != "" {
query = append(query, fmt.Sprintf("%s=:%s", key, key))
}
add = partial || t != ""
case int:
if partial || t != 0 {
query = append(query, fmt.Sprintf("%s=:%s", key, key))
}
add = partial || t != 0
case float64:
if partial || t != 0 {
query = append(query, fmt.Sprintf("%s=:%s", key, key))
}
add = partial || t != 0
case bool:
query = append(query, fmt.Sprintf("%s=:%s", key, key))
add = true
case SQLiteTimestamp:
if partial || !t.Timestamp.IsZero() {
query = append(query, fmt.Sprintf("%s=:%s", key, key))
}
add = partial || !t.Timestamp.IsZero()
case NullSQLiteTimestamp:
add = partial || t.Valid
case SQLiteDate:
if partial || t.Valid {
query = append(query, fmt.Sprintf("%s=:%s", key, key))
}
add = partial || t.Valid
case sql.NullString:
if partial || t.Valid {
query = append(query, fmt.Sprintf("%s=:%s", key, key))
}
add = partial || t.Valid
case sql.NullBool:
if partial || t.Valid {
query = append(query, fmt.Sprintf("%s=:%s", key, key))
}
add = partial || t.Valid
case sql.NullInt64:
if partial || t.Valid {
query = append(query, fmt.Sprintf("%s=:%s", key, key))
}
add = partial || t.Valid
case sql.NullFloat64:
if partial || t.Valid {
query = append(query, fmt.Sprintf("%s=:%s", key, key))
}
add = partial || t.Valid
default:
reflectValue := reflect.ValueOf(t)
isNil := reflectValue.IsNil()
if !isNil {
query = append(query, fmt.Sprintf("%s=:%s", key, key))
}
add = !isNil
}
if add {
query = append(query, fmt.Sprintf("%s=:%s", key, key))
}
}
return strings.Join(query, ", ")