+16
-25
appview/db/email.go
+16
-25
appview/db/email.go
···
3
import (
4
"strings"
5
"time"
6
)
7
8
-
type Email struct {
9
-
ID int64
10
-
Did string
11
-
Address string
12
-
Verified bool
13
-
Primary bool
14
-
VerificationCode string
15
-
LastSent *time.Time
16
-
CreatedAt time.Time
17
-
}
18
-
19
-
func GetPrimaryEmail(e Execer, did string) (Email, error) {
20
query := `
21
select id, did, email, verified, is_primary, verification_code, last_sent, created
22
from emails
23
where did = ? and is_primary = true
24
`
25
-
var email Email
26
var createdStr string
27
var lastSent string
28
err := e.QueryRow(query, did).Scan(&email.ID, &email.Did, &email.Address, &email.Verified, &email.Primary, &email.VerificationCode, &lastSent, &createdStr)
29
if err != nil {
30
-
return Email{}, err
31
}
32
email.CreatedAt, err = time.Parse(time.RFC3339, createdStr)
33
if err != nil {
34
-
return Email{}, err
35
}
36
parsedTime, err := time.Parse(time.RFC3339, lastSent)
37
if err != nil {
38
-
return Email{}, err
39
}
40
email.LastSent = &parsedTime
41
return email, nil
42
}
43
44
-
func GetEmail(e Execer, did string, em string) (Email, error) {
45
query := `
46
select id, did, email, verified, is_primary, verification_code, last_sent, created
47
from emails
48
where did = ? and email = ?
49
`
50
-
var email Email
51
var createdStr string
52
var lastSent string
53
err := e.QueryRow(query, did, em).Scan(&email.ID, &email.Did, &email.Address, &email.Verified, &email.Primary, &email.VerificationCode, &lastSent, &createdStr)
54
if err != nil {
55
-
return Email{}, err
56
}
57
email.CreatedAt, err = time.Parse(time.RFC3339, createdStr)
58
if err != nil {
59
-
return Email{}, err
60
}
61
parsedTime, err := time.Parse(time.RFC3339, lastSent)
62
if err != nil {
63
-
return Email{}, err
64
}
65
email.LastSent = &parsedTime
66
return email, nil
···
187
return count > 0, nil
188
}
189
190
-
func AddEmail(e Execer, email Email) error {
191
// Check if this is the first email for this DID
192
countQuery := `
193
select count(*)
···
254
return err
255
}
256
257
-
func GetAllEmails(e Execer, did string) ([]Email, error) {
258
query := `
259
select did, email, verified, is_primary, verification_code, last_sent, created
260
from emails
···
266
}
267
defer rows.Close()
268
269
-
var emails []Email
270
for rows.Next() {
271
-
var email Email
272
var createdStr string
273
var lastSent string
274
err := rows.Scan(&email.Did, &email.Address, &email.Verified, &email.Primary, &email.VerificationCode, &lastSent, &createdStr)
···
3
import (
4
"strings"
5
"time"
6
+
7
+
"tangled.org/core/appview/models"
8
)
9
10
+
func GetPrimaryEmail(e Execer, did string) (models.Email, error) {
11
query := `
12
select id, did, email, verified, is_primary, verification_code, last_sent, created
13
from emails
14
where did = ? and is_primary = true
15
`
16
+
var email models.Email
17
var createdStr string
18
var lastSent string
19
err := e.QueryRow(query, did).Scan(&email.ID, &email.Did, &email.Address, &email.Verified, &email.Primary, &email.VerificationCode, &lastSent, &createdStr)
20
if err != nil {
21
+
return models.Email{}, err
22
}
23
email.CreatedAt, err = time.Parse(time.RFC3339, createdStr)
24
if err != nil {
25
+
return models.Email{}, err
26
}
27
parsedTime, err := time.Parse(time.RFC3339, lastSent)
28
if err != nil {
29
+
return models.Email{}, err
30
}
31
email.LastSent = &parsedTime
32
return email, nil
33
}
34
35
+
func GetEmail(e Execer, did string, em string) (models.Email, error) {
36
query := `
37
select id, did, email, verified, is_primary, verification_code, last_sent, created
38
from emails
39
where did = ? and email = ?
40
`
41
+
var email models.Email
42
var createdStr string
43
var lastSent string
44
err := e.QueryRow(query, did, em).Scan(&email.ID, &email.Did, &email.Address, &email.Verified, &email.Primary, &email.VerificationCode, &lastSent, &createdStr)
45
if err != nil {
46
+
return models.Email{}, err
47
}
48
email.CreatedAt, err = time.Parse(time.RFC3339, createdStr)
49
if err != nil {
50
+
return models.Email{}, err
51
}
52
parsedTime, err := time.Parse(time.RFC3339, lastSent)
53
if err != nil {
54
+
return models.Email{}, err
55
}
56
email.LastSent = &parsedTime
57
return email, nil
···
178
return count > 0, nil
179
}
180
181
+
func AddEmail(e Execer, email models.Email) error {
182
// Check if this is the first email for this DID
183
countQuery := `
184
select count(*)
···
245
return err
246
}
247
248
+
func GetAllEmails(e Execer, did string) ([]models.Email, error) {
249
query := `
250
select did, email, verified, is_primary, verification_code, last_sent, created
251
from emails
···
257
}
258
defer rows.Close()
259
260
+
var emails []models.Email
261
for rows.Next() {
262
+
var email models.Email
263
var createdStr string
264
var lastSent string
265
err := rows.Scan(&email.Did, &email.Address, &email.Verified, &email.Primary, &email.VerificationCode, &lastSent, &createdStr)
+16
appview/models/email.go
+16
appview/models/email.go
+1
-1
appview/pages/pages.go
+1
-1
appview/pages/pages.go
+2
-1
appview/settings/settings.go
+2
-1
appview/settings/settings.go
···
16
"tangled.org/core/appview/db"
17
"tangled.org/core/appview/email"
18
"tangled.org/core/appview/middleware"
19
"tangled.org/core/appview/oauth"
20
"tangled.org/core/appview/pages"
21
"tangled.org/core/tid"
···
185
}
186
defer tx.Rollback()
187
188
-
if err := db.AddEmail(tx, db.Email{
189
Did: did,
190
Address: emAddr,
191
Verified: false,
···
16
"tangled.org/core/appview/db"
17
"tangled.org/core/appview/email"
18
"tangled.org/core/appview/middleware"
19
+
"tangled.org/core/appview/models"
20
"tangled.org/core/appview/oauth"
21
"tangled.org/core/appview/pages"
22
"tangled.org/core/tid"
···
186
}
187
defer tx.Rollback()
188
189
+
if err := db.AddEmail(tx, models.Email{
190
Did: did,
191
Address: emAddr,
192
Verified: false,
+2
-1
appview/signup/signup.go
+2
-1
appview/signup/signup.go
···
14
"tangled.org/core/appview/db"
15
"tangled.org/core/appview/dns"
16
"tangled.org/core/appview/email"
17
"tangled.org/core/appview/pages"
18
"tangled.org/core/appview/state/userutil"
19
"tangled.org/core/appview/xrpcclient"
···
229
return
230
}
231
232
-
err = db.AddEmail(s.db, db.Email{
233
Did: did,
234
Address: email,
235
Verified: true,
···
14
"tangled.org/core/appview/db"
15
"tangled.org/core/appview/dns"
16
"tangled.org/core/appview/email"
17
+
"tangled.org/core/appview/models"
18
"tangled.org/core/appview/pages"
19
"tangled.org/core/appview/state/userutil"
20
"tangled.org/core/appview/xrpcclient"
···
230
return
231
}
232
233
+
err = db.AddEmail(s.db, models.Email{
234
Did: did,
235
Address: email,
236
Verified: true,