Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: add response received column #93

Merged
merged 8 commits into from
Jul 31, 2024
15 changes: 8 additions & 7 deletions internal/nostr/models.go
Original file line number Diff line number Diff line change
Expand Up @@ -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
im-adithya marked this conversation as resolved.
Show resolved Hide resolved
CreatedAt time.Time
UpdatedAt time.Time
}

type ResponseEvent struct {
Expand Down
4 changes: 4 additions & 0 deletions internal/nostr/nostr.go
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
im-adithya marked this conversation as resolved.
Show resolved Hide resolved
subscription.RequestEventDB.ResponseReceived = true
svc.db.Save(&subscription.RequestEventDB)
}
responseEvent := ResponseEvent{
NostrId: event.ID,
Content: event.Content,
Expand Down
33 changes: 33 additions & 0 deletions migrations/202407131920_add_response_state_to_request_events.go
Original file line number Diff line number Diff line change
@@ -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
},
}
1 change: 1 addition & 0 deletions migrations/migrate.go
Original file line number Diff line number Diff line change
Expand Up @@ -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()
Expand Down
Loading