diff --git a/internal/nostr/models.go b/internal/nostr/models.go index 76e4a16..98b2d3c 100644 --- a/internal/nostr/models.go +++ b/internal/nostr/models.go @@ -130,13 +130,14 @@ type OnReceiveEOSFunc func(ctx context.Context, subscription *Subscription) type HandleEventFunc func(event *nostr.Event, subscription *Subscription) type RequestEvent struct { - ID uint - SubscriptionId *uint - NostrId string `validate:"required"` - Content string - State string - CreatedAt time.Time - UpdatedAt time.Time + ID uint + SubscriptionId *uint + NostrId string `validate:"required"` + Content string + State string + ResponseReceived bool + CreatedAt time.Time + UpdatedAt time.Time } type ResponseEvent struct { diff --git a/internal/nostr/nostr.go b/internal/nostr/nostr.go index 2332dcd..db1c31c 100644 --- a/internal/nostr/nostr.go +++ b/internal/nostr/nostr.go @@ -794,6 +794,10 @@ func (svc *Service) handleResponseEvent(event *nostr.Event, subscription *Subscr "request_event_id": subscription.RequestEvent.ID, "wallet_pubkey": svc.getWalletPubkey(subscription.Authors), }).Info("Received response event") + if (subscription.RequestEvent != nil) { + subscription.RequestEventDB.ResponseReceived = true + svc.db.Save(&subscription.RequestEventDB) + } responseEvent := ResponseEvent{ NostrId: event.ID, Content: event.Content, diff --git a/migrations/202407131920_add_response_state_to_request_events.go b/migrations/202407131920_add_response_state_to_request_events.go new file mode 100644 index 0000000..721cd88 --- /dev/null +++ b/migrations/202407131920_add_response_state_to_request_events.go @@ -0,0 +1,33 @@ +package migrations + +import ( + "github.com/go-gormigrate/gormigrate/v2" + "gorm.io/gorm" +) + +// Add response_received column to request_events table +var _202407131920_add_response_state_to_request_events = &gormigrate.Migration{ + ID: "202407131920_add_response_state_to_request_events", + Migrate: func(tx *gorm.DB) error { + if err := tx.Exec("ALTER TABLE request_events ADD COLUMN response_received BOOLEAN DEFAULT FALSE").Error; err != nil { + return err + } + + // Update response_received to TRUE if there is a corresponding row in response_events + if err := tx.Exec(` + UPDATE request_events + SET response_received = TRUE + WHERE id IN (SELECT request_id FROM response_events WHERE request_id IS NOT NULL) + `).Error; err != nil { + return err + } + + return nil + }, + Rollback: func(tx *gorm.DB) error { + if err := tx.Exec("ALTER TABLE request_events DROP COLUMN response_received").Error; err != nil { + return err + } + return nil + }, +} diff --git a/migrations/migrate.go b/migrations/migrate.go index b11ab4f..e0280a5 100644 --- a/migrations/migrate.go +++ b/migrations/migrate.go @@ -11,6 +11,7 @@ func Migrate(db *gorm.DB) error { _202402161653_initial_migration, _202404021628_add_uuid_to_subscriptions, _202404031539_add_indexes, + _202407131920_add_response_state_to_request_events, }) return m.Migrate()