Load the directory model from the layered Veracross import

This commit is contained in:
Ian Gulliver
2026-08-16 10:13:05 -07:00
parent 516ef2dea0
commit bbff936f39
11 changed files with 735 additions and 223 deletions
+20 -16
View File
@@ -15,7 +15,24 @@ import (
const changeLogTable = "Change Log"
var changeLogHeader = []string{"Timestamp", "Actor", "Target", "Kind", "File", "Archived"}
var changeLogHeader = append([]string{"Timestamp", "Actor"}, overrideColumns...)
func changeLogRow(actor, email string, previous map[string]string) []string {
row := make([]string, len(changeLogHeader))
row[0] = time.Now().UTC().Format(time.RFC3339)
row[1] = actor
for i, column := range changeLogHeader {
if column == "Email" {
row[i] = email
} else if value, ok := previous[column]; ok {
if value == "" {
value = "-"
}
row[i] = value
}
}
return row
}
var photoExtensions = map[string]string{
"image/jpeg": "jpg",
@@ -68,11 +85,11 @@ func (u uploader) facts(w http.ResponseWriter, r *http.Request) {
break
}
}
if err := u.sheet.SetColumn(appName, "Basic Directory", "Email Lower", key, "Facts", facts); err != nil {
if err := u.sheet.Upsert(appName, "Overrides", "Email", key, "Facts", facts); err != nil {
serverError(w, fmt.Errorf("update facts for %s: %w", key, err))
return
}
logRow := []string{time.Now().UTC().Format(time.RFC3339), me, key, "person facts", facts, old}
logRow := changeLogRow(me, key, map[string]string{"Facts": old})
if err := u.sheet.Append(appName, changeLogTable, changeLogHeader, logRow); err != nil {
serverError(w, fmt.Errorf("append change log after facts update for %s: %w", key, err))
return
@@ -125,12 +142,8 @@ func (u uploader) upload(w http.ResponseWriter, r *http.Request) {
}
folder := "people"
keyColumn := "Email Lower"
column := map[string]string{"photo": "Primary Photo", "pronunciation": "Pronunciation"}[kind]
if target == "family" {
folder = "families"
keyColumn = "Family Key"
column = map[string]string{"photo": "Family Photo", "pronunciation": "Family Pronunciation"}[kind]
}
local, _, _ := strings.Cut(key, "@")
base := local + "-" + kind
@@ -141,15 +154,6 @@ func (u uploader) upload(w http.ResponseWriter, r *http.Request) {
serverError(w, err)
return
}
if err := u.sheet.SetColumn(appName, "Basic Directory", keyColumn, key, column, name); err != nil {
serverError(w, fmt.Errorf("update sheet after upload of %s/%s: %w", folder, name, err))
return
}
logRow := []string{time.Now().UTC().Format(time.RFC3339), me, key, target + " " + kind, name, archived}
if err := u.sheet.Append(appName, changeLogTable, changeLogHeader, logRow); err != nil {
serverError(w, fmt.Errorf("append change log after upload of %s/%s: %w", folder, name, err))
return
}
if err := u.cache.Refresh(); err != nil {
serverError(w, fmt.Errorf("refresh model after upload: %w", err))
return