• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

lightningnetwork / lnd / 15299382095

28 May 2025 11:50AM UTC coverage: 68.42% (+10.1%) from 58.327%
15299382095

Pull #9869

github

web-flow
Merge 7720c7d0f into bff2f2440
Pull Request #9869: sqldb+graph/db: add channel tables and implement some channel CRUD

4 of 225 new or added lines in 3 files covered. (1.78%)

20 existing lines in 6 files now uncovered.

133998 of 195845 relevant lines covered (68.42%)

21953.24 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

0.0
/sqldb/sqlc/graph.sql.go
1
// Code generated by sqlc. DO NOT EDIT.
2
// versions:
3
//   sqlc v1.29.0
4
// source: graph.sql
5

6
package sqlc
7

8
import (
9
        "context"
10
        "database/sql"
11
)
12

13
const addSourceNode = `-- name: AddSourceNode :exec
14
/* ─────────────────────────────────────────────
15
   source_nodes table queries
16
   ─────────────────────────────────────────────
17
*/
18

19
INSERT INTO source_nodes (node_id)
20
VALUES ($1)
21
ON CONFLICT (node_id) DO NOTHING
22
`
23

24
func (q *Queries) AddSourceNode(ctx context.Context, nodeID int64) error {
×
25
        _, err := q.db.ExecContext(ctx, addSourceNode, nodeID)
×
26
        return err
×
27
}
×
28

29
const createChannel = `-- name: CreateChannel :one
30
/* ─────────────────────────────────────────────
31
   channels table queries
32
   ─────────────────────────────────────────────
33
*/
34

35
INSERT INTO channels (
36
    version, scid, node_id_1, node_id_2,
37
    outpoint, capacity, bitcoin_key_1, bitcoin_key_2,
38
    node_1_signature, node_2_signature, bitcoin_1_signature,
39
    bitcoin_2_signature
40
) VALUES (
41
    $1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12
42
)
43
RETURNING id
44
`
45

46
type CreateChannelParams struct {
47
        Version           int16
48
        Scid              []byte
49
        NodeID1           int64
50
        NodeID2           int64
51
        Outpoint          string
52
        Capacity          sql.NullInt64
53
        BitcoinKey1       []byte
54
        BitcoinKey2       []byte
55
        Node1Signature    []byte
56
        Node2Signature    []byte
57
        Bitcoin1Signature []byte
58
        Bitcoin2Signature []byte
59
}
60

NEW
61
func (q *Queries) CreateChannel(ctx context.Context, arg CreateChannelParams) (int64, error) {
×
NEW
62
        row := q.db.QueryRowContext(ctx, createChannel,
×
NEW
63
                arg.Version,
×
NEW
64
                arg.Scid,
×
NEW
65
                arg.NodeID1,
×
NEW
66
                arg.NodeID2,
×
NEW
67
                arg.Outpoint,
×
NEW
68
                arg.Capacity,
×
NEW
69
                arg.BitcoinKey1,
×
NEW
70
                arg.BitcoinKey2,
×
NEW
71
                arg.Node1Signature,
×
NEW
72
                arg.Node2Signature,
×
NEW
73
                arg.Bitcoin1Signature,
×
NEW
74
                arg.Bitcoin2Signature,
×
NEW
75
        )
×
NEW
76
        var id int64
×
NEW
77
        err := row.Scan(&id)
×
NEW
78
        return id, err
×
NEW
79
}
×
80

81
const createChannelExtraType = `-- name: CreateChannelExtraType :exec
82
/* ─────────────────────────────────────────────
83
   channel_extra_types table queries
84
   ─────────────────────────────────────────────
85
*/
86

87
INSERT INTO channel_extra_types (
88
    channel_id, type, value
89
)
90
VALUES ($1, $2, $3)
91
`
92

93
type CreateChannelExtraTypeParams struct {
94
        ChannelID int64
95
        Type      int64
96
        Value     []byte
97
}
98

NEW
99
func (q *Queries) CreateChannelExtraType(ctx context.Context, arg CreateChannelExtraTypeParams) error {
×
NEW
100
        _, err := q.db.ExecContext(ctx, createChannelExtraType, arg.ChannelID, arg.Type, arg.Value)
×
NEW
101
        return err
×
NEW
102
}
×
103

104
const deleteExtraNodeType = `-- name: DeleteExtraNodeType :exec
105
DELETE FROM node_extra_types
106
WHERE node_id = $1
107
  AND type = $2
108
`
109

110
type DeleteExtraNodeTypeParams struct {
111
        NodeID int64
112
        Type   int64
113
}
114

115
func (q *Queries) DeleteExtraNodeType(ctx context.Context, arg DeleteExtraNodeTypeParams) error {
×
116
        _, err := q.db.ExecContext(ctx, deleteExtraNodeType, arg.NodeID, arg.Type)
×
117
        return err
×
118
}
×
119

120
const deleteNodeAddresses = `-- name: DeleteNodeAddresses :exec
121
DELETE FROM node_addresses
122
WHERE node_id = $1
123
`
124

125
func (q *Queries) DeleteNodeAddresses(ctx context.Context, nodeID int64) error {
×
126
        _, err := q.db.ExecContext(ctx, deleteNodeAddresses, nodeID)
×
127
        return err
×
128
}
×
129

130
const deleteNodeByPubKey = `-- name: DeleteNodeByPubKey :execresult
131
DELETE FROM nodes
132
WHERE pub_key = $1
133
  AND version = $2
134
`
135

136
type DeleteNodeByPubKeyParams struct {
137
        PubKey  []byte
138
        Version int16
139
}
140

141
func (q *Queries) DeleteNodeByPubKey(ctx context.Context, arg DeleteNodeByPubKeyParams) (sql.Result, error) {
×
142
        return q.db.ExecContext(ctx, deleteNodeByPubKey, arg.PubKey, arg.Version)
×
143
}
×
144

145
const deleteNodeFeature = `-- name: DeleteNodeFeature :exec
146
DELETE FROM node_features
147
WHERE node_id = $1
148
  AND feature_bit = $2
149
`
150

151
type DeleteNodeFeatureParams struct {
152
        NodeID     int64
153
        FeatureBit int32
154
}
155

156
func (q *Queries) DeleteNodeFeature(ctx context.Context, arg DeleteNodeFeatureParams) error {
×
157
        _, err := q.db.ExecContext(ctx, deleteNodeFeature, arg.NodeID, arg.FeatureBit)
×
158
        return err
×
159
}
×
160

161
const getChannelBySCID = `-- name: GetChannelBySCID :one
162
SELECT id, version, scid, node_id_1, node_id_2, outpoint, capacity, bitcoin_key_1, bitcoin_key_2, node_1_signature, node_2_signature, bitcoin_1_signature, bitcoin_2_signature FROM channels
163
WHERE scid = $1 AND version = $2
164
`
165

166
type GetChannelBySCIDParams struct {
167
        Scid    []byte
168
        Version int16
169
}
170

NEW
171
func (q *Queries) GetChannelBySCID(ctx context.Context, arg GetChannelBySCIDParams) (Channel, error) {
×
NEW
172
        row := q.db.QueryRowContext(ctx, getChannelBySCID, arg.Scid, arg.Version)
×
NEW
173
        var i Channel
×
NEW
174
        err := row.Scan(
×
NEW
175
                &i.ID,
×
NEW
176
                &i.Version,
×
NEW
177
                &i.Scid,
×
NEW
178
                &i.NodeID1,
×
NEW
179
                &i.NodeID2,
×
NEW
180
                &i.Outpoint,
×
NEW
181
                &i.Capacity,
×
NEW
182
                &i.BitcoinKey1,
×
NEW
183
                &i.BitcoinKey2,
×
NEW
184
                &i.Node1Signature,
×
NEW
185
                &i.Node2Signature,
×
NEW
186
                &i.Bitcoin1Signature,
×
NEW
187
                &i.Bitcoin2Signature,
×
NEW
188
        )
×
NEW
189
        return i, err
×
NEW
190
}
×
191

192
const getExtraNodeTypes = `-- name: GetExtraNodeTypes :many
193
SELECT node_id, type, value
194
FROM node_extra_types
195
WHERE node_id = $1
196
`
197

198
func (q *Queries) GetExtraNodeTypes(ctx context.Context, nodeID int64) ([]NodeExtraType, error) {
×
199
        rows, err := q.db.QueryContext(ctx, getExtraNodeTypes, nodeID)
×
200
        if err != nil {
×
201
                return nil, err
×
202
        }
×
203
        defer rows.Close()
×
204
        var items []NodeExtraType
×
205
        for rows.Next() {
×
206
                var i NodeExtraType
×
207
                if err := rows.Scan(&i.NodeID, &i.Type, &i.Value); err != nil {
×
208
                        return nil, err
×
209
                }
×
210
                items = append(items, i)
×
211
        }
212
        if err := rows.Close(); err != nil {
×
213
                return nil, err
×
214
        }
×
215
        if err := rows.Err(); err != nil {
×
216
                return nil, err
×
217
        }
×
218
        return items, nil
×
219
}
220

221
const getNodeAddressesByPubKey = `-- name: GetNodeAddressesByPubKey :many
222
SELECT a.type, a.address
223
FROM nodes n
224
LEFT JOIN node_addresses a ON a.node_id = n.id
225
WHERE n.pub_key = $1 AND n.version = $2
226
ORDER BY a.type ASC, a.position ASC
227
`
228

229
type GetNodeAddressesByPubKeyParams struct {
230
        PubKey  []byte
231
        Version int16
232
}
233

234
type GetNodeAddressesByPubKeyRow struct {
235
        Type    sql.NullInt16
236
        Address sql.NullString
237
}
238

239
func (q *Queries) GetNodeAddressesByPubKey(ctx context.Context, arg GetNodeAddressesByPubKeyParams) ([]GetNodeAddressesByPubKeyRow, error) {
×
240
        rows, err := q.db.QueryContext(ctx, getNodeAddressesByPubKey, arg.PubKey, arg.Version)
×
241
        if err != nil {
×
242
                return nil, err
×
243
        }
×
244
        defer rows.Close()
×
245
        var items []GetNodeAddressesByPubKeyRow
×
246
        for rows.Next() {
×
247
                var i GetNodeAddressesByPubKeyRow
×
248
                if err := rows.Scan(&i.Type, &i.Address); err != nil {
×
249
                        return nil, err
×
250
                }
×
251
                items = append(items, i)
×
252
        }
253
        if err := rows.Close(); err != nil {
×
254
                return nil, err
×
255
        }
×
256
        if err := rows.Err(); err != nil {
×
257
                return nil, err
×
258
        }
×
259
        return items, nil
×
260
}
261

262
const getNodeByPubKey = `-- name: GetNodeByPubKey :one
263
SELECT id, version, pub_key, alias, last_update, color, signature
264
FROM nodes
265
WHERE pub_key = $1
266
  AND version = $2
267
`
268

269
type GetNodeByPubKeyParams struct {
270
        PubKey  []byte
271
        Version int16
272
}
273

274
func (q *Queries) GetNodeByPubKey(ctx context.Context, arg GetNodeByPubKeyParams) (Node, error) {
×
275
        row := q.db.QueryRowContext(ctx, getNodeByPubKey, arg.PubKey, arg.Version)
×
276
        var i Node
×
277
        err := row.Scan(
×
278
                &i.ID,
×
279
                &i.Version,
×
280
                &i.PubKey,
×
281
                &i.Alias,
×
282
                &i.LastUpdate,
×
283
                &i.Color,
×
284
                &i.Signature,
×
285
        )
×
286
        return i, err
×
287
}
×
288

289
const getNodeFeatures = `-- name: GetNodeFeatures :many
290
SELECT node_id, feature_bit
291
FROM node_features
292
WHERE node_id = $1
293
`
294

295
func (q *Queries) GetNodeFeatures(ctx context.Context, nodeID int64) ([]NodeFeature, error) {
×
296
        rows, err := q.db.QueryContext(ctx, getNodeFeatures, nodeID)
×
297
        if err != nil {
×
298
                return nil, err
×
299
        }
×
300
        defer rows.Close()
×
301
        var items []NodeFeature
×
302
        for rows.Next() {
×
303
                var i NodeFeature
×
304
                if err := rows.Scan(&i.NodeID, &i.FeatureBit); err != nil {
×
305
                        return nil, err
×
306
                }
×
307
                items = append(items, i)
×
308
        }
309
        if err := rows.Close(); err != nil {
×
310
                return nil, err
×
311
        }
×
312
        if err := rows.Err(); err != nil {
×
313
                return nil, err
×
314
        }
×
315
        return items, nil
×
316
}
317

318
const getNodeFeaturesByPubKey = `-- name: GetNodeFeaturesByPubKey :many
319
SELECT f.feature_bit
320
FROM nodes n
321
    JOIN node_features f ON f.node_id = n.id
322
WHERE n.pub_key = $1
323
  AND n.version = $2
324
`
325

326
type GetNodeFeaturesByPubKeyParams struct {
327
        PubKey  []byte
328
        Version int16
329
}
330

331
func (q *Queries) GetNodeFeaturesByPubKey(ctx context.Context, arg GetNodeFeaturesByPubKeyParams) ([]int32, error) {
×
332
        rows, err := q.db.QueryContext(ctx, getNodeFeaturesByPubKey, arg.PubKey, arg.Version)
×
333
        if err != nil {
×
334
                return nil, err
×
335
        }
×
336
        defer rows.Close()
×
337
        var items []int32
×
338
        for rows.Next() {
×
339
                var feature_bit int32
×
340
                if err := rows.Scan(&feature_bit); err != nil {
×
341
                        return nil, err
×
342
                }
×
343
                items = append(items, feature_bit)
×
344
        }
345
        if err := rows.Close(); err != nil {
×
346
                return nil, err
×
347
        }
×
348
        if err := rows.Err(); err != nil {
×
349
                return nil, err
×
350
        }
×
351
        return items, nil
×
352
}
353

354
const getNodesByLastUpdateRange = `-- name: GetNodesByLastUpdateRange :many
355
SELECT id, version, pub_key, alias, last_update, color, signature
356
FROM nodes
357
WHERE last_update >= $1
358
  AND last_update < $2
359
`
360

361
type GetNodesByLastUpdateRangeParams struct {
362
        StartTime sql.NullInt64
363
        EndTime   sql.NullInt64
364
}
365

366
func (q *Queries) GetNodesByLastUpdateRange(ctx context.Context, arg GetNodesByLastUpdateRangeParams) ([]Node, error) {
×
367
        rows, err := q.db.QueryContext(ctx, getNodesByLastUpdateRange, arg.StartTime, arg.EndTime)
×
368
        if err != nil {
×
369
                return nil, err
×
370
        }
×
371
        defer rows.Close()
×
372
        var items []Node
×
373
        for rows.Next() {
×
374
                var i Node
×
375
                if err := rows.Scan(
×
376
                        &i.ID,
×
377
                        &i.Version,
×
378
                        &i.PubKey,
×
379
                        &i.Alias,
×
380
                        &i.LastUpdate,
×
381
                        &i.Color,
×
382
                        &i.Signature,
×
383
                ); err != nil {
×
384
                        return nil, err
×
385
                }
×
386
                items = append(items, i)
×
387
        }
388
        if err := rows.Close(); err != nil {
×
389
                return nil, err
×
390
        }
×
391
        if err := rows.Err(); err != nil {
×
392
                return nil, err
×
393
        }
×
394
        return items, nil
×
395
}
396

397
const getSourceNodesByVersion = `-- name: GetSourceNodesByVersion :many
398
SELECT sn.node_id, n.pub_key
399
FROM source_nodes sn
400
    JOIN nodes n ON sn.node_id = n.id
401
WHERE n.version = $1
402
`
403

404
type GetSourceNodesByVersionRow struct {
405
        NodeID int64
406
        PubKey []byte
407
}
408

409
func (q *Queries) GetSourceNodesByVersion(ctx context.Context, version int16) ([]GetSourceNodesByVersionRow, error) {
×
410
        rows, err := q.db.QueryContext(ctx, getSourceNodesByVersion, version)
×
411
        if err != nil {
×
412
                return nil, err
×
413
        }
×
414
        defer rows.Close()
×
415
        var items []GetSourceNodesByVersionRow
×
416
        for rows.Next() {
×
417
                var i GetSourceNodesByVersionRow
×
418
                if err := rows.Scan(&i.NodeID, &i.PubKey); err != nil {
×
419
                        return nil, err
×
420
                }
×
421
                items = append(items, i)
×
422
        }
423
        if err := rows.Close(); err != nil {
×
424
                return nil, err
×
425
        }
×
426
        if err := rows.Err(); err != nil {
×
427
                return nil, err
×
428
        }
×
429
        return items, nil
×
430
}
431

432
const highestSCID = `-- name: HighestSCID :one
433
SELECT scid
434
FROM channels
435
WHERE version = $1
436
ORDER BY scid DESC
437
LIMIT 1
438
`
439

NEW
440
func (q *Queries) HighestSCID(ctx context.Context, version int16) ([]byte, error) {
×
NEW
441
        row := q.db.QueryRowContext(ctx, highestSCID, version)
×
NEW
442
        var scid []byte
×
NEW
443
        err := row.Scan(&scid)
×
NEW
444
        return scid, err
×
NEW
445
}
×
446

447
const insertChannelFeature = `-- name: InsertChannelFeature :exec
448
/* ─────────────────────────────────────────────
449
   channel_features table queries
450
   ─────────────────────────────────────────────
451
*/
452

453
INSERT INTO channel_features (
454
    channel_id, feature_bit
455
) VALUES (
456
    $1, $2
457
)
458
`
459

460
type InsertChannelFeatureParams struct {
461
        ChannelID  int64
462
        FeatureBit int32
463
}
464

NEW
465
func (q *Queries) InsertChannelFeature(ctx context.Context, arg InsertChannelFeatureParams) error {
×
NEW
466
        _, err := q.db.ExecContext(ctx, insertChannelFeature, arg.ChannelID, arg.FeatureBit)
×
NEW
467
        return err
×
NEW
468
}
×
469

470
const insertNodeAddress = `-- name: InsertNodeAddress :exec
471
/* ─────────────────────────────────────────────
472
   node_addresses table queries
473
   ─────────────────────────────────────────────
474
*/
475

476
INSERT INTO node_addresses (
477
    node_id,
478
    type,
479
    address,
480
    position
481
) VALUES (
482
    $1, $2, $3, $4
483
 )
484
`
485

486
type InsertNodeAddressParams struct {
487
        NodeID   int64
488
        Type     int16
489
        Address  string
490
        Position int32
491
}
492

493
func (q *Queries) InsertNodeAddress(ctx context.Context, arg InsertNodeAddressParams) error {
×
494
        _, err := q.db.ExecContext(ctx, insertNodeAddress,
×
495
                arg.NodeID,
×
496
                arg.Type,
×
497
                arg.Address,
×
498
                arg.Position,
×
499
        )
×
500
        return err
×
501
}
×
502

503
const insertNodeFeature = `-- name: InsertNodeFeature :exec
504
/* ─────────────────────────────────────────────
505
   node_features table queries
506
   ─────────────────────────────────────────────
507
*/
508

509
INSERT INTO node_features (
510
    node_id, feature_bit
511
) VALUES (
512
    $1, $2
513
)
514
`
515

516
type InsertNodeFeatureParams struct {
517
        NodeID     int64
518
        FeatureBit int32
519
}
520

521
func (q *Queries) InsertNodeFeature(ctx context.Context, arg InsertNodeFeatureParams) error {
×
522
        _, err := q.db.ExecContext(ctx, insertNodeFeature, arg.NodeID, arg.FeatureBit)
×
523
        return err
×
524
}
×
525

526
const upsertNode = `-- name: UpsertNode :one
527
/* ─────────────────────────────────────────────
528
   nodes table queries
529
   ─────────────────────────────────────────────
530
*/
531

532
INSERT INTO nodes (
533
    version, pub_key, alias, last_update, color, signature
534
) VALUES (
535
    $1, $2, $3, $4, $5, $6
536
)
537
ON CONFLICT (pub_key, version)
538
    -- Update the following fields if a conflict occurs on pub_key
539
    -- and version.
540
    DO UPDATE SET
541
        alias = EXCLUDED.alias,
542
        last_update = EXCLUDED.last_update,
543
        color = EXCLUDED.color,
544
        signature = EXCLUDED.signature
545
WHERE EXCLUDED.last_update > nodes.last_update
546
RETURNING id
547
`
548

549
type UpsertNodeParams struct {
550
        Version    int16
551
        PubKey     []byte
552
        Alias      sql.NullString
553
        LastUpdate sql.NullInt64
554
        Color      sql.NullString
555
        Signature  []byte
556
}
557

558
func (q *Queries) UpsertNode(ctx context.Context, arg UpsertNodeParams) (int64, error) {
×
559
        row := q.db.QueryRowContext(ctx, upsertNode,
×
560
                arg.Version,
×
561
                arg.PubKey,
×
562
                arg.Alias,
×
563
                arg.LastUpdate,
×
564
                arg.Color,
×
565
                arg.Signature,
×
566
        )
×
567
        var id int64
×
568
        err := row.Scan(&id)
×
569
        return id, err
×
570
}
×
571

572
const upsertNodeExtraType = `-- name: UpsertNodeExtraType :exec
573
/* ─────────────────────────────────────────────
574
   node_extra_types table queries
575
   ─────────────────────────────────────────────
576
*/
577

578
INSERT INTO node_extra_types (
579
    node_id, type, value
580
)
581
VALUES ($1, $2, $3)
582
ON CONFLICT (type, node_id)
583
    -- Update the value if a conflict occurs on type
584
    -- and node_id.
585
    DO UPDATE SET value = EXCLUDED.value
586
`
587

588
type UpsertNodeExtraTypeParams struct {
589
        NodeID int64
590
        Type   int64
591
        Value  []byte
592
}
593

594
func (q *Queries) UpsertNodeExtraType(ctx context.Context, arg UpsertNodeExtraTypeParams) error {
×
595
        _, err := q.db.ExecContext(ctx, upsertNodeExtraType, arg.NodeID, arg.Type, arg.Value)
×
596
        return err
×
597
}
×
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc