diff --git a/db/init.sql b/db/init.sql index de22e94..9c7846a 100644 --- a/db/init.sql +++ b/db/init.sql @@ -12,12 +12,10 @@ CREATE TABLE sessions( pubkey TEXT NOT NULL REFERENCES users(pubkey), session_id VARCHAR(48) ); -CREATE TYPE market_status AS ENUM ('WAITING_FOR_PAYMENT', 'ACTIVE', 'EXPIRED'); CREATE TABLE markets( id SERIAL PRIMARY KEY, description TEXT NOT NULL, end_date TIMESTAMP WITH TIME ZONE NOT NULL, - status MARKET_STATUS NOT NULL DEFAULT 'WAITING_FOR_PAYMENT'; invoice_id UUID NOT NULL UNIQUE REFERENCES invoices(id) ); CREATE EXTENSION "uuid-ossp"; diff --git a/db/market.go b/db/market.go index 52f0831..0ca6ad3 100644 --- a/db/market.go +++ b/db/market.go @@ -10,8 +10,8 @@ type FetchOrdersWhere struct { func (db *DB) CreateMarket(market *Market) error { if err := db.QueryRow(""+ - "INSERT INTO markets(description, end_date, status, invoice_id) "+ - "VALUES($1, $2, 'WAITING_FOR_PAYMENT', $3) "+ + "INSERT INTO markets(description, end_date, invoice_id) "+ + "VALUES($1, $2, $3) "+ "RETURNING id", market.Description, market.EndDate, market.InvoiceId).Scan(&market.Id); err != nil { return err } @@ -22,16 +22,8 @@ func (db *DB) CreateMarket(market *Market) error { return nil } -func (db *DB) MarkMarketAsActive(hash string) error { - _, err := db.Exec(""+ - "UPDATE markets SET status = 'ACTIVE' "+ - "WHERE invoice_id = (SELECT id FROM invoices WHERE hash = $1) "+ - "AND status = 'WAITING_FOR_PAYMENT'", hash) - return err -} - func (db *DB) FetchMarket(marketId int, market *Market) error { - if err := db.QueryRow("SELECT id, description, end_date, status FROM markets WHERE id = $1", marketId).Scan(&market.Id, &market.Description, &market.EndDate, &market.Status); err != nil { + if err := db.QueryRow("SELECT id, description, end_date FROM markets WHERE id = $1", marketId).Scan(&market.Id, &market.Description, &market.EndDate); err != nil { return err } return nil @@ -43,12 +35,14 @@ func (db *DB) FetchActiveMarkets(markets *[]Market) error { market Market err error ) - if rows, err = db.Query("SELECT id, description, end_date, status FROM markets WHERE status = 'ACTIVE'"); err != nil { + if rows, err = db.Query("" + + "SELECT m.id, m.description, m.end_date FROM markets m " + + "JOIN invoices i ON i.id = m.invoice_id WHERE i.confirmed_at IS NOT NULL"); err != nil { return err } defer rows.Close() for rows.Next() { - rows.Scan(&market.Id, &market.Description, &market.EndDate, &market.Status) + rows.Scan(&market.Id, &market.Description, &market.EndDate) *markets = append(*markets, market) } return nil diff --git a/db/types.go b/db/types.go index 27b3912..e0d817e 100644 --- a/db/types.go +++ b/db/types.go @@ -27,7 +27,6 @@ type ( Id Serial `json:"id"` Description string `json:"description"` EndDate time.Time `json:"endDate"` - Status string `json:"status"` InvoiceId UUID } Share struct { diff --git a/lnd/invoice.go b/lnd/invoice.go index ef3089c..337fa8d 100644 --- a/lnd/invoice.go +++ b/lnd/invoice.go @@ -2,7 +2,6 @@ package lnd import ( "context" - "database/sql" "log" "time" @@ -88,10 +87,6 @@ func (lnd *LNDClient) CheckInvoice(d *db.DB, hash lntypes.Hash) { break } if lnInvoice.AmountPaid > 0 { - if err = RunStateTransition(d, lnInvoice.Hash); err != nil { - handleLoopError(err) - continue - } if preimage, err = lntypes.MakePreimageFromStr(invoice.Preimage); err != nil { handleLoopError(err) continue @@ -112,16 +107,6 @@ func (lnd *LNDClient) CheckInvoice(d *db.DB, hash lntypes.Hash) { } } -func RunStateTransition(d *db.DB, hash lntypes.Hash) error { - if err := d.MarkMarketAsActive(hash.String()); err != nil { - if err == sql.ErrNoRows { - return nil - } - return err - } - return nil -} - func (lnd *LNDClient) CheckInvoices(d *db.DB) error { var ( invoices []db.Invoice