diff --git a/appview/db/email.go b/appview/db/email.go --- a/appview/db/email.go +++ b/appview/db/email.go @@ -3,64 +3,55 @@ import ( "strings" "time" + + "tangled.org/core/appview/models" ) -type Email struct { - ID int64 - Did string - Address string - Verified bool - Primary bool - VerificationCode string - LastSent *time.Time - CreatedAt time.Time -} - -func GetPrimaryEmail(e Execer, did string) (Email, error) { +func GetPrimaryEmail(e Execer, did string) (models.Email, error) { query := ` select id, did, email, verified, is_primary, verification_code, last_sent, created from emails where did = ? and is_primary = true ` - var email Email + var email models.Email var createdStr string var lastSent string err := e.QueryRow(query, did).Scan(&email.ID, &email.Did, &email.Address, &email.Verified, &email.Primary, &email.VerificationCode, &lastSent, &createdStr) if err != nil { - return Email{}, err + return models.Email{}, err } email.CreatedAt, err = time.Parse(time.RFC3339, createdStr) if err != nil { - return Email{}, err + return models.Email{}, err } parsedTime, err := time.Parse(time.RFC3339, lastSent) if err != nil { - return Email{}, err + return models.Email{}, err } email.LastSent = &parsedTime return email, nil } -func GetEmail(e Execer, did string, em string) (Email, error) { +func GetEmail(e Execer, did string, em string) (models.Email, error) { query := ` select id, did, email, verified, is_primary, verification_code, last_sent, created from emails where did = ? and email = ? ` - var email Email + var email models.Email var createdStr string var lastSent string err := e.QueryRow(query, did, em).Scan(&email.ID, &email.Did, &email.Address, &email.Verified, &email.Primary, &email.VerificationCode, &lastSent, &createdStr) if err != nil { - return Email{}, err + return models.Email{}, err } email.CreatedAt, err = time.Parse(time.RFC3339, createdStr) if err != nil { - return Email{}, err + return models.Email{}, err } parsedTime, err := time.Parse(time.RFC3339, lastSent) if err != nil { - return Email{}, err + return models.Email{}, err } email.LastSent = &parsedTime return email, nil @@ -187,7 +178,7 @@ return count > 0, nil } -func AddEmail(e Execer, email Email) error { +func AddEmail(e Execer, email models.Email) error { // Check if this is the first email for this DID countQuery := ` select count(*) @@ -254,7 +245,7 @@ return err } -func GetAllEmails(e Execer, did string) ([]Email, error) { +func GetAllEmails(e Execer, did string) ([]models.Email, error) { query := ` select did, email, verified, is_primary, verification_code, last_sent, created from emails @@ -266,9 +257,9 @@ } defer rows.Close() - var emails []Email + var emails []models.Email for rows.Next() { - var email Email + var email models.Email var createdStr string var lastSent string err := rows.Scan(&email.Did, &email.Address, &email.Verified, &email.Primary, &email.VerificationCode, &lastSent, &createdStr) diff --git a/appview/models/email.go b/appview/models/email.go new file mode 100644 --- /dev/null +++ b/appview/models/email.go @@ -0,0 +1,16 @@ +package models + +import ( + "time" +) + +type Email struct { + ID int64 + Did string + Address string + Verified bool + Primary bool + VerificationCode string + LastSent *time.Time + CreatedAt time.Time +} diff --git a/appview/pages/pages.go b/appview/pages/pages.go --- a/appview/pages/pages.go +++ b/appview/pages/pages.go @@ -314,7 +314,7 @@ type UserEmailsSettingsParams struct { LoggedInUser *oauth.User - Emails []db.Email + Emails []models.Email Tabs []map[string]any Tab string } diff --git a/appview/settings/settings.go b/appview/settings/settings.go --- a/appview/settings/settings.go +++ b/appview/settings/settings.go @@ -16,6 +16,7 @@ "tangled.org/core/appview/db" "tangled.org/core/appview/email" "tangled.org/core/appview/middleware" + "tangled.org/core/appview/models" "tangled.org/core/appview/oauth" "tangled.org/core/appview/pages" "tangled.org/core/tid" @@ -185,7 +186,7 @@ } defer tx.Rollback() - if err := db.AddEmail(tx, db.Email{ + if err := db.AddEmail(tx, models.Email{ Did: did, Address: emAddr, Verified: false, diff --git a/appview/signup/signup.go b/appview/signup/signup.go --- a/appview/signup/signup.go +++ b/appview/signup/signup.go @@ -14,6 +14,7 @@ "tangled.org/core/appview/db" "tangled.org/core/appview/dns" "tangled.org/core/appview/email" + "tangled.org/core/appview/models" "tangled.org/core/appview/pages" "tangled.org/core/appview/state/userutil" "tangled.org/core/appview/xrpcclient" @@ -229,7 +230,7 @@ return } - err = db.AddEmail(s.db, db.Email{ + err = db.AddEmail(s.db, models.Email{ Did: did, Address: email, Verified: true,