feat: add otel
This commit is contained in:
30
feed.go
30
feed.go
@@ -14,6 +14,7 @@ import (
|
||||
|
||||
_ "embed"
|
||||
|
||||
"go.sour.is/xt/internal/otel"
|
||||
"go.yarn.social/lextwt"
|
||||
"go.yarn.social/types"
|
||||
)
|
||||
@@ -76,7 +77,10 @@ var (
|
||||
last_modified_on,
|
||||
last_etag
|
||||
from feeds
|
||||
where datetime(last_scan_on, '+'||refresh_rate||' seconds') < datetime(current_timestamp, '+10 minutes')
|
||||
where datetime(
|
||||
coalesce(last_scan_on, '1901-01-01'),
|
||||
'+'||refresh_rate||' seconds'
|
||||
) < datetime(current_timestamp, '+10 minutes')
|
||||
`
|
||||
updateFeed = `
|
||||
update feeds set
|
||||
@@ -90,7 +94,9 @@ var (
|
||||
)
|
||||
|
||||
func (f *Feed) Save(ctx context.Context, db *sql.DB) error {
|
||||
fmt.Println(f.FetchURI, " ", f.LastModified, " ", f.LastError)
|
||||
ctx, span := otel.Span(ctx)
|
||||
defer span.End()
|
||||
|
||||
_, err := db.ExecContext(
|
||||
ctx,
|
||||
updateFeed,
|
||||
@@ -135,6 +141,8 @@ func (f *Feed) Scan(res interface{ Scan(...any) error }) error {
|
||||
}
|
||||
|
||||
func loadFeeds(ctx context.Context, db *sql.DB) (iter.Seq[Feed], error) {
|
||||
ctx, span := otel.Span(ctx)
|
||||
|
||||
var err error
|
||||
var res *sql.Rows
|
||||
|
||||
@@ -145,6 +153,8 @@ func loadFeeds(ctx context.Context, db *sql.DB) (iter.Seq[Feed], error) {
|
||||
}
|
||||
|
||||
return func(yield func(Feed) bool) {
|
||||
defer span.End()
|
||||
|
||||
for res.Next() {
|
||||
var f Feed
|
||||
err = f.Scan(res)
|
||||
@@ -158,13 +168,16 @@ func loadFeeds(ctx context.Context, db *sql.DB) (iter.Seq[Feed], error) {
|
||||
}, err
|
||||
}
|
||||
|
||||
func storeFeed(db *sql.DB, f types.TwtFile) error {
|
||||
func storeFeed(ctx context.Context, db *sql.DB, f types.TwtFile) error {
|
||||
ctx, span := otel.Span(ctx)
|
||||
defer span.End()
|
||||
|
||||
loadTS := time.Now()
|
||||
refreshRate := 600
|
||||
|
||||
feedID := urlNS.UUID5(cmp.Or(f.Twter().HashingURI, f.Twter().URI))
|
||||
|
||||
tx, err := db.Begin()
|
||||
tx, err := db.BeginTx(ctx, nil)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -188,7 +201,8 @@ func storeFeed(db *sql.DB, f types.TwtFile) error {
|
||||
|
||||
defer tx.Rollback()
|
||||
|
||||
_, err = tx.Exec(
|
||||
_, err = tx.ExecContext(
|
||||
ctx,
|
||||
insertFeed,
|
||||
feedID,
|
||||
f.Twter().HashingURI,
|
||||
@@ -220,7 +234,8 @@ func storeFeed(db *sql.DB, f types.TwtFile) error {
|
||||
}
|
||||
}
|
||||
|
||||
_, err = tx.Exec(
|
||||
_, err = tx.ExecContext(
|
||||
ctx,
|
||||
insertTwt,
|
||||
feedID,
|
||||
twt.Hash(),
|
||||
@@ -236,7 +251,8 @@ func storeFeed(db *sql.DB, f types.TwtFile) error {
|
||||
}
|
||||
|
||||
for nick, uri := range followMap {
|
||||
_, err = tx.Exec(
|
||||
_, err = tx.ExecContext(
|
||||
ctx,
|
||||
insertFeed,
|
||||
urlNS.UUID5(uri),
|
||||
uri,
|
||||
|
||||
Reference in New Issue
Block a user