Skip to content

Commit b04749f

Browse files
committed
chore: shift cleanup routine to command
1 parent 58a7898 commit b04749f

3 files changed

Lines changed: 105 additions & 67 deletions

File tree

cmd/daily-cleanup/main.go

Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
package main
2+
3+
import (
4+
"database/sql"
5+
"http-nostr/internal/nostr"
6+
"os"
7+
"time"
8+
9+
"github.com/joho/godotenv"
10+
"github.com/kelseyhightower/envconfig"
11+
"github.com/sirupsen/logrus"
12+
logger "github.com/sirupsen/logrus"
13+
"gorm.io/driver/postgres"
14+
"gorm.io/gorm"
15+
16+
"github.com/jackc/pgx/v5/stdlib"
17+
sqltrace "gopkg.in/DataDog/dd-trace-go.v1/contrib/database/sql"
18+
gormtrace "gopkg.in/DataDog/dd-trace-go.v1/contrib/gorm.io/gorm.v1"
19+
)
20+
21+
func main() {
22+
godotenv.Load(".env")
23+
24+
cfg := &nostr.Config{}
25+
err := envconfig.Process("", cfg)
26+
if err != nil {
27+
logger.Fatalf("Error loading environment variables: %v", err)
28+
}
29+
30+
logger.SetFormatter(&logrus.JSONFormatter{})
31+
logger.SetOutput(os.Stdout)
32+
logger.SetLevel(logrus.Level(cfg.LogLevel))
33+
34+
db, err := initStorage(cfg)
35+
if err != nil {
36+
logger.Fatalf("Could not initialize storage: %v", err)
37+
}
38+
39+
queries := []string{
40+
// delete closed subscriptions older than 2 weeks
41+
// note: this will cascade delete the corresponding response_events
42+
`DELETE FROM subscriptions
43+
WHERE open = FALSE
44+
AND created_at < NOW() - INTERVAL '2 weeks';`,
45+
46+
// delete request_events older than 2 weeks
47+
// note: this will cascade delete the corresponding response_events
48+
`DELETE FROM request_events
49+
WHERE created_at < NOW() - INTERVAL '2 weeks';`,
50+
51+
// delete response_events older than 2 weeks
52+
// note: this deletes response_events from active subscriptions
53+
`DELETE FROM response_events
54+
WHERE created_at < NOW() - INTERVAL '2 weeks';`,
55+
}
56+
57+
err = db.Transaction(func(tx *gorm.DB) error {
58+
for _, q := range queries {
59+
if err := tx.Exec(q).Error; err != nil {
60+
logger.WithError(err).Errorf("Query failed: %s", q)
61+
return err
62+
}
63+
}
64+
return nil
65+
})
66+
if err != nil {
67+
logger.Fatalf("Failed to run cron job: %v", err)
68+
}
69+
}
70+
71+
func initStorage(cfg *nostr.Config) (*gorm.DB, error) {
72+
var db *gorm.DB
73+
var sqlDb *sql.DB
74+
var err error
75+
if cfg.DatadogAgentUrl != "" {
76+
sqltrace.Register("pgx", &stdlib.Driver{}, sqltrace.WithServiceName("http-nostr"))
77+
sqlDb, err = sqltrace.Open("pgx", cfg.DatabaseUri)
78+
if err != nil {
79+
logger.WithError(err).Error("Failed to open DB")
80+
return nil, err
81+
}
82+
db, err = gormtrace.Open(postgres.New(postgres.Config{Conn: sqlDb}), &gorm.Config{}, gormtrace.WithServiceName("http-nostr"))
83+
if err != nil {
84+
logger.WithError(err).Error("Failed to open DB")
85+
return nil, err
86+
}
87+
} else {
88+
db, err = gorm.Open(postgres.Open(cfg.DatabaseUri), &gorm.Config{})
89+
if err != nil {
90+
logger.WithError(err).Error("Failed to open DB")
91+
return nil, err
92+
}
93+
sqlDb, err = db.DB()
94+
if err != nil {
95+
logger.WithError(err).Error("Failed to set DB config")
96+
return nil, err
97+
}
98+
}
99+
100+
sqlDb.SetMaxOpenConns(cfg.DatabaseMaxConns)
101+
sqlDb.SetMaxIdleConns(cfg.DatabaseMaxIdleConns)
102+
sqlDb.SetConnMaxLifetime(time.Duration(cfg.DatabaseConnMaxLifetime) * time.Second)
103+
104+
return db, nil
105+
}

internal/nostr/cron.go

Lines changed: 0 additions & 64 deletions
This file was deleted.

internal/nostr/nostr.go

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -133,9 +133,6 @@ func NewService(ctx context.Context) (*Service, error) {
133133
client: client,
134134
}
135135

136-
logger.Info("Registering cron job for daily cleanup...")
137-
svc.StartDailyCleanup()
138-
139136
logger.Info("Starting all open subscriptions...")
140137
var openSubscriptions []Subscription
141138
if err := svc.db.Where("open = ?", true).Find(&openSubscriptions).Error; err != nil {

0 commit comments

Comments
 (0)