+1096
-2
api/tangled/cbor_gen.go
+1096
-2
api/tangled/cbor_gen.go
···
1753
1753
}
1754
1754
1755
1755
cw := cbg.NewCborWriter(w)
1756
-
fieldCount := 5
1756
+
fieldCount := 6
1757
1757
1758
1758
if t.AddedAt == nil {
1759
+
fieldCount--
1760
+
}
1761
+
1762
+
if t.Description == nil {
1759
1763
fieldCount--
1760
1764
}
1761
1765
···
1882
1886
}
1883
1887
}
1884
1888
}
1889
+
1890
+
// t.Description (string) (string)
1891
+
if t.Description != nil {
1892
+
1893
+
if len("description") > 1000000 {
1894
+
return xerrors.Errorf("Value in field \"description\" was too long")
1895
+
}
1896
+
1897
+
if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("description"))); err != nil {
1898
+
return err
1899
+
}
1900
+
if _, err := cw.WriteString(string("description")); err != nil {
1901
+
return err
1902
+
}
1903
+
1904
+
if t.Description == nil {
1905
+
if _, err := cw.Write(cbg.CborNull); err != nil {
1906
+
return err
1907
+
}
1908
+
} else {
1909
+
if len(*t.Description) > 1000000 {
1910
+
return xerrors.Errorf("Value in field t.Description was too long")
1911
+
}
1912
+
1913
+
if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len(*t.Description))); err != nil {
1914
+
return err
1915
+
}
1916
+
if _, err := cw.WriteString(string(*t.Description)); err != nil {
1917
+
return err
1918
+
}
1919
+
}
1920
+
}
1885
1921
return nil
1886
1922
}
1887
1923
···
1910
1946
1911
1947
n := extra
1912
1948
1913
-
nameBuf := make([]byte, 7)
1949
+
nameBuf := make([]byte, 11)
1914
1950
for i := uint64(0); i < n; i++ {
1915
1951
nameLen, ok, err := cbg.ReadFullStringIntoBuf(cr, nameBuf, 1000000)
1916
1952
if err != nil {
···
1989
2025
}
1990
2026
1991
2027
t.AddedAt = (*string)(&sval)
2028
+
}
2029
+
}
2030
+
// t.Description (string) (string)
2031
+
case "description":
2032
+
2033
+
{
2034
+
b, err := cr.ReadByte()
2035
+
if err != nil {
2036
+
return err
2037
+
}
2038
+
if b != cbg.CborNull[0] {
2039
+
if err := cr.UnreadByte(); err != nil {
2040
+
return err
2041
+
}
2042
+
2043
+
sval, err := cbg.ReadStringWithMax(cr, 1000000)
2044
+
if err != nil {
2045
+
return err
2046
+
}
2047
+
2048
+
t.Description = (*string)(&sval)
2049
+
}
2050
+
}
2051
+
2052
+
default:
2053
+
// Field doesn't exist on this type, so ignore it
2054
+
if err := cbg.ScanForLinks(r, func(cid.Cid) {}); err != nil {
2055
+
return err
2056
+
}
2057
+
}
2058
+
}
2059
+
2060
+
return nil
2061
+
}
2062
+
func (t *RepoPullPatch) MarshalCBOR(w io.Writer) error {
2063
+
if t == nil {
2064
+
_, err := w.Write(cbg.CborNull)
2065
+
return err
2066
+
}
2067
+
2068
+
cw := cbg.NewCborWriter(w)
2069
+
fieldCount := 8
2070
+
2071
+
if t.Body == nil {
2072
+
fieldCount--
2073
+
}
2074
+
2075
+
if t.CreatedAt == nil {
2076
+
fieldCount--
2077
+
}
2078
+
2079
+
if t.SourceRepo == nil {
2080
+
fieldCount--
2081
+
}
2082
+
2083
+
if _, err := cw.Write(cbg.CborEncodeMajorType(cbg.MajMap, uint64(fieldCount))); err != nil {
2084
+
return err
2085
+
}
2086
+
2087
+
// t.Body (string) (string)
2088
+
if t.Body != nil {
2089
+
2090
+
if len("body") > 1000000 {
2091
+
return xerrors.Errorf("Value in field \"body\" was too long")
2092
+
}
2093
+
2094
+
if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("body"))); err != nil {
2095
+
return err
2096
+
}
2097
+
if _, err := cw.WriteString(string("body")); err != nil {
2098
+
return err
2099
+
}
2100
+
2101
+
if t.Body == nil {
2102
+
if _, err := cw.Write(cbg.CborNull); err != nil {
2103
+
return err
2104
+
}
2105
+
} else {
2106
+
if len(*t.Body) > 1000000 {
2107
+
return xerrors.Errorf("Value in field t.Body was too long")
2108
+
}
2109
+
2110
+
if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len(*t.Body))); err != nil {
2111
+
return err
2112
+
}
2113
+
if _, err := cw.WriteString(string(*t.Body)); err != nil {
2114
+
return err
2115
+
}
2116
+
}
2117
+
}
2118
+
2119
+
// t.LexiconTypeID (string) (string)
2120
+
if len("$type") > 1000000 {
2121
+
return xerrors.Errorf("Value in field \"$type\" was too long")
2122
+
}
2123
+
2124
+
if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("$type"))); err != nil {
2125
+
return err
2126
+
}
2127
+
if _, err := cw.WriteString(string("$type")); err != nil {
2128
+
return err
2129
+
}
2130
+
2131
+
if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("sh.tangled.repo.pull.patch"))); err != nil {
2132
+
return err
2133
+
}
2134
+
if _, err := cw.WriteString(string("sh.tangled.repo.pull.patch")); err != nil {
2135
+
return err
2136
+
}
2137
+
2138
+
// t.Patch (string) (string)
2139
+
if len("patch") > 1000000 {
2140
+
return xerrors.Errorf("Value in field \"patch\" was too long")
2141
+
}
2142
+
2143
+
if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("patch"))); err != nil {
2144
+
return err
2145
+
}
2146
+
if _, err := cw.WriteString(string("patch")); err != nil {
2147
+
return err
2148
+
}
2149
+
2150
+
if len(t.Patch) > 1000000 {
2151
+
return xerrors.Errorf("Value in field t.Patch was too long")
2152
+
}
2153
+
2154
+
if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len(t.Patch))); err != nil {
2155
+
return err
2156
+
}
2157
+
if _, err := cw.WriteString(string(t.Patch)); err != nil {
2158
+
return err
2159
+
}
2160
+
2161
+
// t.Title (string) (string)
2162
+
if len("title") > 1000000 {
2163
+
return xerrors.Errorf("Value in field \"title\" was too long")
2164
+
}
2165
+
2166
+
if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("title"))); err != nil {
2167
+
return err
2168
+
}
2169
+
if _, err := cw.WriteString(string("title")); err != nil {
2170
+
return err
2171
+
}
2172
+
2173
+
if len(t.Title) > 1000000 {
2174
+
return xerrors.Errorf("Value in field t.Title was too long")
2175
+
}
2176
+
2177
+
if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len(t.Title))); err != nil {
2178
+
return err
2179
+
}
2180
+
if _, err := cw.WriteString(string(t.Title)); err != nil {
2181
+
return err
2182
+
}
2183
+
2184
+
// t.PullId (int64) (int64)
2185
+
if len("pullId") > 1000000 {
2186
+
return xerrors.Errorf("Value in field \"pullId\" was too long")
2187
+
}
2188
+
2189
+
if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("pullId"))); err != nil {
2190
+
return err
2191
+
}
2192
+
if _, err := cw.WriteString(string("pullId")); err != nil {
2193
+
return err
2194
+
}
2195
+
2196
+
if t.PullId >= 0 {
2197
+
if err := cw.WriteMajorTypeHeader(cbg.MajUnsignedInt, uint64(t.PullId)); err != nil {
2198
+
return err
2199
+
}
2200
+
} else {
2201
+
if err := cw.WriteMajorTypeHeader(cbg.MajNegativeInt, uint64(-t.PullId-1)); err != nil {
2202
+
return err
2203
+
}
2204
+
}
2205
+
2206
+
// t.CreatedAt (string) (string)
2207
+
if t.CreatedAt != nil {
2208
+
2209
+
if len("createdAt") > 1000000 {
2210
+
return xerrors.Errorf("Value in field \"createdAt\" was too long")
2211
+
}
2212
+
2213
+
if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("createdAt"))); err != nil {
2214
+
return err
2215
+
}
2216
+
if _, err := cw.WriteString(string("createdAt")); err != nil {
2217
+
return err
2218
+
}
2219
+
2220
+
if t.CreatedAt == nil {
2221
+
if _, err := cw.Write(cbg.CborNull); err != nil {
2222
+
return err
2223
+
}
2224
+
} else {
2225
+
if len(*t.CreatedAt) > 1000000 {
2226
+
return xerrors.Errorf("Value in field t.CreatedAt was too long")
2227
+
}
2228
+
2229
+
if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len(*t.CreatedAt))); err != nil {
2230
+
return err
2231
+
}
2232
+
if _, err := cw.WriteString(string(*t.CreatedAt)); err != nil {
2233
+
return err
2234
+
}
2235
+
}
2236
+
}
2237
+
2238
+
// t.SourceRepo (string) (string)
2239
+
if t.SourceRepo != nil {
2240
+
2241
+
if len("sourceRepo") > 1000000 {
2242
+
return xerrors.Errorf("Value in field \"sourceRepo\" was too long")
2243
+
}
2244
+
2245
+
if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("sourceRepo"))); err != nil {
2246
+
return err
2247
+
}
2248
+
if _, err := cw.WriteString(string("sourceRepo")); err != nil {
2249
+
return err
2250
+
}
2251
+
2252
+
if t.SourceRepo == nil {
2253
+
if _, err := cw.Write(cbg.CborNull); err != nil {
2254
+
return err
2255
+
}
2256
+
} else {
2257
+
if len(*t.SourceRepo) > 1000000 {
2258
+
return xerrors.Errorf("Value in field t.SourceRepo was too long")
2259
+
}
2260
+
2261
+
if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len(*t.SourceRepo))); err != nil {
2262
+
return err
2263
+
}
2264
+
if _, err := cw.WriteString(string(*t.SourceRepo)); err != nil {
2265
+
return err
2266
+
}
2267
+
}
2268
+
}
2269
+
2270
+
// t.TargetRepo (string) (string)
2271
+
if len("targetRepo") > 1000000 {
2272
+
return xerrors.Errorf("Value in field \"targetRepo\" was too long")
2273
+
}
2274
+
2275
+
if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("targetRepo"))); err != nil {
2276
+
return err
2277
+
}
2278
+
if _, err := cw.WriteString(string("targetRepo")); err != nil {
2279
+
return err
2280
+
}
2281
+
2282
+
if len(t.TargetRepo) > 1000000 {
2283
+
return xerrors.Errorf("Value in field t.TargetRepo was too long")
2284
+
}
2285
+
2286
+
if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len(t.TargetRepo))); err != nil {
2287
+
return err
2288
+
}
2289
+
if _, err := cw.WriteString(string(t.TargetRepo)); err != nil {
2290
+
return err
2291
+
}
2292
+
return nil
2293
+
}
2294
+
2295
+
func (t *RepoPullPatch) UnmarshalCBOR(r io.Reader) (err error) {
2296
+
*t = RepoPullPatch{}
2297
+
2298
+
cr := cbg.NewCborReader(r)
2299
+
2300
+
maj, extra, err := cr.ReadHeader()
2301
+
if err != nil {
2302
+
return err
2303
+
}
2304
+
defer func() {
2305
+
if err == io.EOF {
2306
+
err = io.ErrUnexpectedEOF
2307
+
}
2308
+
}()
2309
+
2310
+
if maj != cbg.MajMap {
2311
+
return fmt.Errorf("cbor input should be of type map")
2312
+
}
2313
+
2314
+
if extra > cbg.MaxLength {
2315
+
return fmt.Errorf("RepoPullPatch: map struct too large (%d)", extra)
2316
+
}
2317
+
2318
+
n := extra
2319
+
2320
+
nameBuf := make([]byte, 10)
2321
+
for i := uint64(0); i < n; i++ {
2322
+
nameLen, ok, err := cbg.ReadFullStringIntoBuf(cr, nameBuf, 1000000)
2323
+
if err != nil {
2324
+
return err
2325
+
}
2326
+
2327
+
if !ok {
2328
+
// Field doesn't exist on this type, so ignore it
2329
+
if err := cbg.ScanForLinks(cr, func(cid.Cid) {}); err != nil {
2330
+
return err
2331
+
}
2332
+
continue
2333
+
}
2334
+
2335
+
switch string(nameBuf[:nameLen]) {
2336
+
// t.Body (string) (string)
2337
+
case "body":
2338
+
2339
+
{
2340
+
b, err := cr.ReadByte()
2341
+
if err != nil {
2342
+
return err
2343
+
}
2344
+
if b != cbg.CborNull[0] {
2345
+
if err := cr.UnreadByte(); err != nil {
2346
+
return err
2347
+
}
2348
+
2349
+
sval, err := cbg.ReadStringWithMax(cr, 1000000)
2350
+
if err != nil {
2351
+
return err
2352
+
}
2353
+
2354
+
t.Body = (*string)(&sval)
2355
+
}
2356
+
}
2357
+
// t.LexiconTypeID (string) (string)
2358
+
case "$type":
2359
+
2360
+
{
2361
+
sval, err := cbg.ReadStringWithMax(cr, 1000000)
2362
+
if err != nil {
2363
+
return err
2364
+
}
2365
+
2366
+
t.LexiconTypeID = string(sval)
2367
+
}
2368
+
// t.Patch (string) (string)
2369
+
case "patch":
2370
+
2371
+
{
2372
+
sval, err := cbg.ReadStringWithMax(cr, 1000000)
2373
+
if err != nil {
2374
+
return err
2375
+
}
2376
+
2377
+
t.Patch = string(sval)
2378
+
}
2379
+
// t.Title (string) (string)
2380
+
case "title":
2381
+
2382
+
{
2383
+
sval, err := cbg.ReadStringWithMax(cr, 1000000)
2384
+
if err != nil {
2385
+
return err
2386
+
}
2387
+
2388
+
t.Title = string(sval)
2389
+
}
2390
+
// t.PullId (int64) (int64)
2391
+
case "pullId":
2392
+
{
2393
+
maj, extra, err := cr.ReadHeader()
2394
+
if err != nil {
2395
+
return err
2396
+
}
2397
+
var extraI int64
2398
+
switch maj {
2399
+
case cbg.MajUnsignedInt:
2400
+
extraI = int64(extra)
2401
+
if extraI < 0 {
2402
+
return fmt.Errorf("int64 positive overflow")
2403
+
}
2404
+
case cbg.MajNegativeInt:
2405
+
extraI = int64(extra)
2406
+
if extraI < 0 {
2407
+
return fmt.Errorf("int64 negative overflow")
2408
+
}
2409
+
extraI = -1 - extraI
2410
+
default:
2411
+
return fmt.Errorf("wrong type for int64 field: %d", maj)
2412
+
}
2413
+
2414
+
t.PullId = int64(extraI)
2415
+
}
2416
+
// t.CreatedAt (string) (string)
2417
+
case "createdAt":
2418
+
2419
+
{
2420
+
b, err := cr.ReadByte()
2421
+
if err != nil {
2422
+
return err
2423
+
}
2424
+
if b != cbg.CborNull[0] {
2425
+
if err := cr.UnreadByte(); err != nil {
2426
+
return err
2427
+
}
2428
+
2429
+
sval, err := cbg.ReadStringWithMax(cr, 1000000)
2430
+
if err != nil {
2431
+
return err
2432
+
}
2433
+
2434
+
t.CreatedAt = (*string)(&sval)
2435
+
}
2436
+
}
2437
+
// t.SourceRepo (string) (string)
2438
+
case "sourceRepo":
2439
+
2440
+
{
2441
+
b, err := cr.ReadByte()
2442
+
if err != nil {
2443
+
return err
2444
+
}
2445
+
if b != cbg.CborNull[0] {
2446
+
if err := cr.UnreadByte(); err != nil {
2447
+
return err
2448
+
}
2449
+
2450
+
sval, err := cbg.ReadStringWithMax(cr, 1000000)
2451
+
if err != nil {
2452
+
return err
2453
+
}
2454
+
2455
+
t.SourceRepo = (*string)(&sval)
2456
+
}
2457
+
}
2458
+
// t.TargetRepo (string) (string)
2459
+
case "targetRepo":
2460
+
2461
+
{
2462
+
sval, err := cbg.ReadStringWithMax(cr, 1000000)
2463
+
if err != nil {
2464
+
return err
2465
+
}
2466
+
2467
+
t.TargetRepo = string(sval)
2468
+
}
2469
+
2470
+
default:
2471
+
// Field doesn't exist on this type, so ignore it
2472
+
if err := cbg.ScanForLinks(r, func(cid.Cid) {}); err != nil {
2473
+
return err
2474
+
}
2475
+
}
2476
+
}
2477
+
2478
+
return nil
2479
+
}
2480
+
func (t *RepoPullState) MarshalCBOR(w io.Writer) error {
2481
+
if t == nil {
2482
+
_, err := w.Write(cbg.CborNull)
2483
+
return err
2484
+
}
2485
+
2486
+
cw := cbg.NewCborWriter(w)
2487
+
fieldCount := 3
2488
+
2489
+
if t.State == nil {
2490
+
fieldCount--
2491
+
}
2492
+
2493
+
if _, err := cw.Write(cbg.CborEncodeMajorType(cbg.MajMap, uint64(fieldCount))); err != nil {
2494
+
return err
2495
+
}
2496
+
2497
+
// t.Pull (string) (string)
2498
+
if len("pull") > 1000000 {
2499
+
return xerrors.Errorf("Value in field \"pull\" was too long")
2500
+
}
2501
+
2502
+
if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("pull"))); err != nil {
2503
+
return err
2504
+
}
2505
+
if _, err := cw.WriteString(string("pull")); err != nil {
2506
+
return err
2507
+
}
2508
+
2509
+
if len(t.Pull) > 1000000 {
2510
+
return xerrors.Errorf("Value in field t.Pull was too long")
2511
+
}
2512
+
2513
+
if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len(t.Pull))); err != nil {
2514
+
return err
2515
+
}
2516
+
if _, err := cw.WriteString(string(t.Pull)); err != nil {
2517
+
return err
2518
+
}
2519
+
2520
+
// t.LexiconTypeID (string) (string)
2521
+
if len("$type") > 1000000 {
2522
+
return xerrors.Errorf("Value in field \"$type\" was too long")
2523
+
}
2524
+
2525
+
if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("$type"))); err != nil {
2526
+
return err
2527
+
}
2528
+
if _, err := cw.WriteString(string("$type")); err != nil {
2529
+
return err
2530
+
}
2531
+
2532
+
if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("sh.tangled.repo.pull.state"))); err != nil {
2533
+
return err
2534
+
}
2535
+
if _, err := cw.WriteString(string("sh.tangled.repo.pull.state")); err != nil {
2536
+
return err
2537
+
}
2538
+
2539
+
// t.State (string) (string)
2540
+
if t.State != nil {
2541
+
2542
+
if len("state") > 1000000 {
2543
+
return xerrors.Errorf("Value in field \"state\" was too long")
2544
+
}
2545
+
2546
+
if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("state"))); err != nil {
2547
+
return err
2548
+
}
2549
+
if _, err := cw.WriteString(string("state")); err != nil {
2550
+
return err
2551
+
}
2552
+
2553
+
if t.State == nil {
2554
+
if _, err := cw.Write(cbg.CborNull); err != nil {
2555
+
return err
2556
+
}
2557
+
} else {
2558
+
if len(*t.State) > 1000000 {
2559
+
return xerrors.Errorf("Value in field t.State was too long")
2560
+
}
2561
+
2562
+
if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len(*t.State))); err != nil {
2563
+
return err
2564
+
}
2565
+
if _, err := cw.WriteString(string(*t.State)); err != nil {
2566
+
return err
2567
+
}
2568
+
}
2569
+
}
2570
+
return nil
2571
+
}
2572
+
2573
+
func (t *RepoPullState) UnmarshalCBOR(r io.Reader) (err error) {
2574
+
*t = RepoPullState{}
2575
+
2576
+
cr := cbg.NewCborReader(r)
2577
+
2578
+
maj, extra, err := cr.ReadHeader()
2579
+
if err != nil {
2580
+
return err
2581
+
}
2582
+
defer func() {
2583
+
if err == io.EOF {
2584
+
err = io.ErrUnexpectedEOF
2585
+
}
2586
+
}()
2587
+
2588
+
if maj != cbg.MajMap {
2589
+
return fmt.Errorf("cbor input should be of type map")
2590
+
}
2591
+
2592
+
if extra > cbg.MaxLength {
2593
+
return fmt.Errorf("RepoPullState: map struct too large (%d)", extra)
2594
+
}
2595
+
2596
+
n := extra
2597
+
2598
+
nameBuf := make([]byte, 5)
2599
+
for i := uint64(0); i < n; i++ {
2600
+
nameLen, ok, err := cbg.ReadFullStringIntoBuf(cr, nameBuf, 1000000)
2601
+
if err != nil {
2602
+
return err
2603
+
}
2604
+
2605
+
if !ok {
2606
+
// Field doesn't exist on this type, so ignore it
2607
+
if err := cbg.ScanForLinks(cr, func(cid.Cid) {}); err != nil {
2608
+
return err
2609
+
}
2610
+
continue
2611
+
}
2612
+
2613
+
switch string(nameBuf[:nameLen]) {
2614
+
// t.Pull (string) (string)
2615
+
case "pull":
2616
+
2617
+
{
2618
+
sval, err := cbg.ReadStringWithMax(cr, 1000000)
2619
+
if err != nil {
2620
+
return err
2621
+
}
2622
+
2623
+
t.Pull = string(sval)
2624
+
}
2625
+
// t.LexiconTypeID (string) (string)
2626
+
case "$type":
2627
+
2628
+
{
2629
+
sval, err := cbg.ReadStringWithMax(cr, 1000000)
2630
+
if err != nil {
2631
+
return err
2632
+
}
2633
+
2634
+
t.LexiconTypeID = string(sval)
2635
+
}
2636
+
// t.State (string) (string)
2637
+
case "state":
2638
+
2639
+
{
2640
+
b, err := cr.ReadByte()
2641
+
if err != nil {
2642
+
return err
2643
+
}
2644
+
if b != cbg.CborNull[0] {
2645
+
if err := cr.UnreadByte(); err != nil {
2646
+
return err
2647
+
}
2648
+
2649
+
sval, err := cbg.ReadStringWithMax(cr, 1000000)
2650
+
if err != nil {
2651
+
return err
2652
+
}
2653
+
2654
+
t.State = (*string)(&sval)
2655
+
}
2656
+
}
2657
+
2658
+
default:
2659
+
// Field doesn't exist on this type, so ignore it
2660
+
if err := cbg.ScanForLinks(r, func(cid.Cid) {}); err != nil {
2661
+
return err
2662
+
}
2663
+
}
2664
+
}
2665
+
2666
+
return nil
2667
+
}
2668
+
func (t *RepoPullComment) MarshalCBOR(w io.Writer) error {
2669
+
if t == nil {
2670
+
_, err := w.Write(cbg.CborNull)
2671
+
return err
2672
+
}
2673
+
2674
+
cw := cbg.NewCborWriter(w)
2675
+
fieldCount := 7
2676
+
2677
+
if t.Body == nil {
2678
+
fieldCount--
2679
+
}
2680
+
2681
+
if t.CommentId == nil {
2682
+
fieldCount--
2683
+
}
2684
+
2685
+
if t.CreatedAt == nil {
2686
+
fieldCount--
2687
+
}
2688
+
2689
+
if t.Owner == nil {
2690
+
fieldCount--
2691
+
}
2692
+
2693
+
if t.Repo == nil {
2694
+
fieldCount--
2695
+
}
2696
+
2697
+
if _, err := cw.Write(cbg.CborEncodeMajorType(cbg.MajMap, uint64(fieldCount))); err != nil {
2698
+
return err
2699
+
}
2700
+
2701
+
// t.Body (string) (string)
2702
+
if t.Body != nil {
2703
+
2704
+
if len("body") > 1000000 {
2705
+
return xerrors.Errorf("Value in field \"body\" was too long")
2706
+
}
2707
+
2708
+
if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("body"))); err != nil {
2709
+
return err
2710
+
}
2711
+
if _, err := cw.WriteString(string("body")); err != nil {
2712
+
return err
2713
+
}
2714
+
2715
+
if t.Body == nil {
2716
+
if _, err := cw.Write(cbg.CborNull); err != nil {
2717
+
return err
2718
+
}
2719
+
} else {
2720
+
if len(*t.Body) > 1000000 {
2721
+
return xerrors.Errorf("Value in field t.Body was too long")
2722
+
}
2723
+
2724
+
if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len(*t.Body))); err != nil {
2725
+
return err
2726
+
}
2727
+
if _, err := cw.WriteString(string(*t.Body)); err != nil {
2728
+
return err
2729
+
}
2730
+
}
2731
+
}
2732
+
2733
+
// t.Pull (string) (string)
2734
+
if len("pull") > 1000000 {
2735
+
return xerrors.Errorf("Value in field \"pull\" was too long")
2736
+
}
2737
+
2738
+
if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("pull"))); err != nil {
2739
+
return err
2740
+
}
2741
+
if _, err := cw.WriteString(string("pull")); err != nil {
2742
+
return err
2743
+
}
2744
+
2745
+
if len(t.Pull) > 1000000 {
2746
+
return xerrors.Errorf("Value in field t.Pull was too long")
2747
+
}
2748
+
2749
+
if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len(t.Pull))); err != nil {
2750
+
return err
2751
+
}
2752
+
if _, err := cw.WriteString(string(t.Pull)); err != nil {
2753
+
return err
2754
+
}
2755
+
2756
+
// t.Repo (string) (string)
2757
+
if t.Repo != nil {
2758
+
2759
+
if len("repo") > 1000000 {
2760
+
return xerrors.Errorf("Value in field \"repo\" was too long")
2761
+
}
2762
+
2763
+
if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("repo"))); err != nil {
2764
+
return err
2765
+
}
2766
+
if _, err := cw.WriteString(string("repo")); err != nil {
2767
+
return err
2768
+
}
2769
+
2770
+
if t.Repo == nil {
2771
+
if _, err := cw.Write(cbg.CborNull); err != nil {
2772
+
return err
2773
+
}
2774
+
} else {
2775
+
if len(*t.Repo) > 1000000 {
2776
+
return xerrors.Errorf("Value in field t.Repo was too long")
2777
+
}
2778
+
2779
+
if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len(*t.Repo))); err != nil {
2780
+
return err
2781
+
}
2782
+
if _, err := cw.WriteString(string(*t.Repo)); err != nil {
2783
+
return err
2784
+
}
2785
+
}
2786
+
}
2787
+
2788
+
// t.LexiconTypeID (string) (string)
2789
+
if len("$type") > 1000000 {
2790
+
return xerrors.Errorf("Value in field \"$type\" was too long")
2791
+
}
2792
+
2793
+
if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("$type"))); err != nil {
2794
+
return err
2795
+
}
2796
+
if _, err := cw.WriteString(string("$type")); err != nil {
2797
+
return err
2798
+
}
2799
+
2800
+
if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("sh.tangled.repo.pull.comment"))); err != nil {
2801
+
return err
2802
+
}
2803
+
if _, err := cw.WriteString(string("sh.tangled.repo.pull.comment")); err != nil {
2804
+
return err
2805
+
}
2806
+
2807
+
// t.Owner (string) (string)
2808
+
if t.Owner != nil {
2809
+
2810
+
if len("owner") > 1000000 {
2811
+
return xerrors.Errorf("Value in field \"owner\" was too long")
2812
+
}
2813
+
2814
+
if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("owner"))); err != nil {
2815
+
return err
2816
+
}
2817
+
if _, err := cw.WriteString(string("owner")); err != nil {
2818
+
return err
2819
+
}
2820
+
2821
+
if t.Owner == nil {
2822
+
if _, err := cw.Write(cbg.CborNull); err != nil {
2823
+
return err
2824
+
}
2825
+
} else {
2826
+
if len(*t.Owner) > 1000000 {
2827
+
return xerrors.Errorf("Value in field t.Owner was too long")
2828
+
}
2829
+
2830
+
if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len(*t.Owner))); err != nil {
2831
+
return err
2832
+
}
2833
+
if _, err := cw.WriteString(string(*t.Owner)); err != nil {
2834
+
return err
2835
+
}
2836
+
}
2837
+
}
2838
+
2839
+
// t.CommentId (int64) (int64)
2840
+
if t.CommentId != nil {
2841
+
2842
+
if len("commentId") > 1000000 {
2843
+
return xerrors.Errorf("Value in field \"commentId\" was too long")
2844
+
}
2845
+
2846
+
if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("commentId"))); err != nil {
2847
+
return err
2848
+
}
2849
+
if _, err := cw.WriteString(string("commentId")); err != nil {
2850
+
return err
2851
+
}
2852
+
2853
+
if t.CommentId == nil {
2854
+
if _, err := cw.Write(cbg.CborNull); err != nil {
2855
+
return err
2856
+
}
2857
+
} else {
2858
+
if *t.CommentId >= 0 {
2859
+
if err := cw.WriteMajorTypeHeader(cbg.MajUnsignedInt, uint64(*t.CommentId)); err != nil {
2860
+
return err
2861
+
}
2862
+
} else {
2863
+
if err := cw.WriteMajorTypeHeader(cbg.MajNegativeInt, uint64(-*t.CommentId-1)); err != nil {
2864
+
return err
2865
+
}
2866
+
}
2867
+
}
2868
+
2869
+
}
2870
+
2871
+
// t.CreatedAt (string) (string)
2872
+
if t.CreatedAt != nil {
2873
+
2874
+
if len("createdAt") > 1000000 {
2875
+
return xerrors.Errorf("Value in field \"createdAt\" was too long")
2876
+
}
2877
+
2878
+
if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("createdAt"))); err != nil {
2879
+
return err
2880
+
}
2881
+
if _, err := cw.WriteString(string("createdAt")); err != nil {
2882
+
return err
2883
+
}
2884
+
2885
+
if t.CreatedAt == nil {
2886
+
if _, err := cw.Write(cbg.CborNull); err != nil {
2887
+
return err
2888
+
}
2889
+
} else {
2890
+
if len(*t.CreatedAt) > 1000000 {
2891
+
return xerrors.Errorf("Value in field t.CreatedAt was too long")
2892
+
}
2893
+
2894
+
if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len(*t.CreatedAt))); err != nil {
2895
+
return err
2896
+
}
2897
+
if _, err := cw.WriteString(string(*t.CreatedAt)); err != nil {
2898
+
return err
2899
+
}
2900
+
}
2901
+
}
2902
+
return nil
2903
+
}
2904
+
2905
+
func (t *RepoPullComment) UnmarshalCBOR(r io.Reader) (err error) {
2906
+
*t = RepoPullComment{}
2907
+
2908
+
cr := cbg.NewCborReader(r)
2909
+
2910
+
maj, extra, err := cr.ReadHeader()
2911
+
if err != nil {
2912
+
return err
2913
+
}
2914
+
defer func() {
2915
+
if err == io.EOF {
2916
+
err = io.ErrUnexpectedEOF
2917
+
}
2918
+
}()
2919
+
2920
+
if maj != cbg.MajMap {
2921
+
return fmt.Errorf("cbor input should be of type map")
2922
+
}
2923
+
2924
+
if extra > cbg.MaxLength {
2925
+
return fmt.Errorf("RepoPullComment: map struct too large (%d)", extra)
2926
+
}
2927
+
2928
+
n := extra
2929
+
2930
+
nameBuf := make([]byte, 9)
2931
+
for i := uint64(0); i < n; i++ {
2932
+
nameLen, ok, err := cbg.ReadFullStringIntoBuf(cr, nameBuf, 1000000)
2933
+
if err != nil {
2934
+
return err
2935
+
}
2936
+
2937
+
if !ok {
2938
+
// Field doesn't exist on this type, so ignore it
2939
+
if err := cbg.ScanForLinks(cr, func(cid.Cid) {}); err != nil {
2940
+
return err
2941
+
}
2942
+
continue
2943
+
}
2944
+
2945
+
switch string(nameBuf[:nameLen]) {
2946
+
// t.Body (string) (string)
2947
+
case "body":
2948
+
2949
+
{
2950
+
b, err := cr.ReadByte()
2951
+
if err != nil {
2952
+
return err
2953
+
}
2954
+
if b != cbg.CborNull[0] {
2955
+
if err := cr.UnreadByte(); err != nil {
2956
+
return err
2957
+
}
2958
+
2959
+
sval, err := cbg.ReadStringWithMax(cr, 1000000)
2960
+
if err != nil {
2961
+
return err
2962
+
}
2963
+
2964
+
t.Body = (*string)(&sval)
2965
+
}
2966
+
}
2967
+
// t.Pull (string) (string)
2968
+
case "pull":
2969
+
2970
+
{
2971
+
sval, err := cbg.ReadStringWithMax(cr, 1000000)
2972
+
if err != nil {
2973
+
return err
2974
+
}
2975
+
2976
+
t.Pull = string(sval)
2977
+
}
2978
+
// t.Repo (string) (string)
2979
+
case "repo":
2980
+
2981
+
{
2982
+
b, err := cr.ReadByte()
2983
+
if err != nil {
2984
+
return err
2985
+
}
2986
+
if b != cbg.CborNull[0] {
2987
+
if err := cr.UnreadByte(); err != nil {
2988
+
return err
2989
+
}
2990
+
2991
+
sval, err := cbg.ReadStringWithMax(cr, 1000000)
2992
+
if err != nil {
2993
+
return err
2994
+
}
2995
+
2996
+
t.Repo = (*string)(&sval)
2997
+
}
2998
+
}
2999
+
// t.LexiconTypeID (string) (string)
3000
+
case "$type":
3001
+
3002
+
{
3003
+
sval, err := cbg.ReadStringWithMax(cr, 1000000)
3004
+
if err != nil {
3005
+
return err
3006
+
}
3007
+
3008
+
t.LexiconTypeID = string(sval)
3009
+
}
3010
+
// t.Owner (string) (string)
3011
+
case "owner":
3012
+
3013
+
{
3014
+
b, err := cr.ReadByte()
3015
+
if err != nil {
3016
+
return err
3017
+
}
3018
+
if b != cbg.CborNull[0] {
3019
+
if err := cr.UnreadByte(); err != nil {
3020
+
return err
3021
+
}
3022
+
3023
+
sval, err := cbg.ReadStringWithMax(cr, 1000000)
3024
+
if err != nil {
3025
+
return err
3026
+
}
3027
+
3028
+
t.Owner = (*string)(&sval)
3029
+
}
3030
+
}
3031
+
// t.CommentId (int64) (int64)
3032
+
case "commentId":
3033
+
{
3034
+
3035
+
b, err := cr.ReadByte()
3036
+
if err != nil {
3037
+
return err
3038
+
}
3039
+
if b != cbg.CborNull[0] {
3040
+
if err := cr.UnreadByte(); err != nil {
3041
+
return err
3042
+
}
3043
+
maj, extra, err := cr.ReadHeader()
3044
+
if err != nil {
3045
+
return err
3046
+
}
3047
+
var extraI int64
3048
+
switch maj {
3049
+
case cbg.MajUnsignedInt:
3050
+
extraI = int64(extra)
3051
+
if extraI < 0 {
3052
+
return fmt.Errorf("int64 positive overflow")
3053
+
}
3054
+
case cbg.MajNegativeInt:
3055
+
extraI = int64(extra)
3056
+
if extraI < 0 {
3057
+
return fmt.Errorf("int64 negative overflow")
3058
+
}
3059
+
extraI = -1 - extraI
3060
+
default:
3061
+
return fmt.Errorf("wrong type for int64 field: %d", maj)
3062
+
}
3063
+
3064
+
t.CommentId = (*int64)(&extraI)
3065
+
}
3066
+
}
3067
+
// t.CreatedAt (string) (string)
3068
+
case "createdAt":
3069
+
3070
+
{
3071
+
b, err := cr.ReadByte()
3072
+
if err != nil {
3073
+
return err
3074
+
}
3075
+
if b != cbg.CborNull[0] {
3076
+
if err := cr.UnreadByte(); err != nil {
3077
+
return err
3078
+
}
3079
+
3080
+
sval, err := cbg.ReadStringWithMax(cr, 1000000)
3081
+
if err != nil {
3082
+
return err
3083
+
}
3084
+
3085
+
t.CreatedAt = (*string)(&sval)
1992
3086
}
1993
3087
}
1994
3088
+27
api/tangled/pullcomment.go
+27
api/tangled/pullcomment.go
···
1
+
// Code generated by cmd/lexgen (see Makefile's lexgen); DO NOT EDIT.
2
+
3
+
package tangled
4
+
5
+
// schema: sh.tangled.repo.pull.comment
6
+
7
+
import (
8
+
//"github.com/bluesky-social/indigo/lex/util"
9
+
)
10
+
11
+
const (
12
+
RepoPullCommentNSID = "sh.tangled.repo.pull.comment"
13
+
)
14
+
15
+
func init() {
16
+
//util.RegisterType("sh.tangled.repo.pull.comment", &RepoPullComment{})
17
+
} //
18
+
// RECORDTYPE: RepoPullComment
19
+
type RepoPullComment struct {
20
+
LexiconTypeID string `json:"$type,const=sh.tangled.repo.pull.comment" cborgen:"$type,const=sh.tangled.repo.pull.comment"`
21
+
Body *string `json:"body,omitempty" cborgen:"body,omitempty"`
22
+
CommentId *int64 `json:"commentId,omitempty" cborgen:"commentId,omitempty"`
23
+
CreatedAt *string `json:"createdAt,omitempty" cborgen:"createdAt,omitempty"`
24
+
Owner *string `json:"owner,omitempty" cborgen:"owner,omitempty"`
25
+
Pull string `json:"pull" cborgen:"pull"`
26
+
Repo *string `json:"repo,omitempty" cborgen:"repo,omitempty"`
27
+
}
+28
api/tangled/pullpatch.go
+28
api/tangled/pullpatch.go
···
1
+
// Code generated by cmd/lexgen (see Makefile's lexgen); DO NOT EDIT.
2
+
3
+
package tangled
4
+
5
+
// schema: sh.tangled.repo.pull.patch
6
+
7
+
import (
8
+
"github.com/bluesky-social/indigo/lex/util"
9
+
)
10
+
11
+
const (
12
+
RepoPullPatchNSID = "sh.tangled.repo.pull.patch"
13
+
)
14
+
15
+
func init() {
16
+
util.RegisterType("sh.tangled.repo.pull.patch", &RepoPullPatch{})
17
+
} //
18
+
// RECORDTYPE: RepoPullPatch
19
+
type RepoPullPatch struct {
20
+
LexiconTypeID string `json:"$type,const=sh.tangled.repo.pull.patch" cborgen:"$type,const=sh.tangled.repo.pull.patch"`
21
+
Body *string `json:"body,omitempty" cborgen:"body,omitempty"`
22
+
CreatedAt *string `json:"createdAt,omitempty" cborgen:"createdAt,omitempty"`
23
+
Patch string `json:"patch" cborgen:"patch"`
24
+
PullId int64 `json:"pullId" cborgen:"pullId"`
25
+
SourceRepo *string `json:"sourceRepo,omitempty" cborgen:"sourceRepo,omitempty"`
26
+
TargetRepo string `json:"targetRepo" cborgen:"targetRepo"`
27
+
Title string `json:"title" cborgen:"title"`
28
+
}
+24
api/tangled/pullstate.go
+24
api/tangled/pullstate.go
···
1
+
// Code generated by cmd/lexgen (see Makefile's lexgen); DO NOT EDIT.
2
+
3
+
package tangled
4
+
5
+
// schema: sh.tangled.repo.pull.state
6
+
7
+
import (
8
+
//"github.com/bluesky-social/indigo/lex/util"
9
+
)
10
+
11
+
const (
12
+
RepoPullStateNSID = "sh.tangled.repo.pull.state"
13
+
)
14
+
15
+
func init() {
16
+
//util.RegisterType("sh.tangled.repo.pull.state", &RepoPullState{})
17
+
} //
18
+
// RECORDTYPE: RepoPullState
19
+
type RepoPullState struct {
20
+
LexiconTypeID string `json:"$type,const=sh.tangled.repo.pull.state" cborgen:"$type,const=sh.tangled.repo.pull.state"`
21
+
Pull string `json:"pull" cborgen:"pull"`
22
+
// state: state of the pull request
23
+
State *string `json:"state,omitempty" cborgen:"state,omitempty"`
24
+
}
+2
-2
api/tangled/stateclosed.go
+2
-2
api/tangled/stateclosed.go
+9
api/tangled/statemerged.go
+9
api/tangled/statemerged.go
+2
-2
api/tangled/stateopen.go
+2
-2
api/tangled/stateopen.go
+30
appview/db/db.go
+30
appview/db/db.go
···
103
103
unique(issue_id, comment_id),
104
104
foreign key (repo_at, issue_id) references issues(repo_at, issue_id) on delete cascade
105
105
);
106
+
create table if not exists pulls (
107
+
id integer primary key autoincrement,
108
+
owner_did text not null,
109
+
repo_at text not null,
110
+
pull_id integer not null,
111
+
title text not null,
112
+
patch text,
113
+
patch_at text not null,
114
+
open integer not null default 1,
115
+
created text not null default (strftime('%Y-%m-%dT%H:%M:%SZ', 'now')),
116
+
unique(repo_at, pull_id),
117
+
foreign key (repo_at) references repos(at_uri) on delete cascade
118
+
);
119
+
create table if not exists pull_comments (
120
+
id integer primary key autoincrement,
121
+
owner_did text not null,
122
+
pull_id integer not null,
123
+
repo_at text not null,
124
+
comment_id integer not null,
125
+
comment_at text not null,
126
+
body text not null,
127
+
created text not null default (strftime('%Y-%m-%dT%H:%M:%SZ', 'now')),
128
+
unique(pull_id, comment_id),
129
+
foreign key (repo_at, pull_id) references pulls(repo_at, pull_id) on delete cascade
130
+
);
106
131
create table if not exists _jetstream (
107
132
id integer primary key autoincrement,
108
133
last_time_us integer not null
···
111
136
create table if not exists repo_issue_seqs (
112
137
repo_at text primary key,
113
138
next_issue_id integer not null default 1
139
+
);
140
+
141
+
create table if not exists repo_pull_seqs (
142
+
repo_at text primary key,
143
+
next_pull_id integer not null default 1
114
144
);
115
145
116
146
create table if not exists stars (
+254
appview/db/pulls.go
+254
appview/db/pulls.go
···
1
+
package db
2
+
3
+
import (
4
+
"database/sql"
5
+
"time"
6
+
7
+
"github.com/bluesky-social/indigo/atproto/syntax"
8
+
)
9
+
10
+
type Pulls struct {
11
+
ID int `json:"id"`
12
+
OwnerDid string `json:"owner_did"`
13
+
RepoAt string `json:"repo_at"`
14
+
PullId int `json:"pull_id"`
15
+
Title string `json:"title"`
16
+
Patch string `json:"patch,omitempty"`
17
+
PatchAt string `json:"patch_at"`
18
+
Open int `json:"open"`
19
+
Created time.Time `json:"created"`
20
+
}
21
+
22
+
type PullComments struct {
23
+
ID int `json:"id"`
24
+
OwnerDid string `json:"owner_did"`
25
+
PullId int `json:"pull_id"`
26
+
RepoAt string `json:"repo_at"`
27
+
CommentId int `json:"comment_id"`
28
+
CommentAt string `json:"comment_at"`
29
+
Body string `json:"body"`
30
+
Created time.Time `json:"created"`
31
+
}
32
+
33
+
func NewPull(tx *sql.Tx, pull *Pulls) error {
34
+
defer tx.Rollback()
35
+
36
+
_, err := tx.Exec(`
37
+
insert or ignore into repo_pull_seqs (repo_at, next_pull_id)
38
+
values (?, 1)
39
+
`, pull.RepoAt)
40
+
if err != nil {
41
+
return err
42
+
}
43
+
44
+
var nextId int
45
+
err = tx.QueryRow(`
46
+
update repo_pull_seqs
47
+
set next_pull_id = next_pull_id + 1
48
+
where repo_at = ?
49
+
returning next_pull_id - 1
50
+
`, pull.RepoAt).Scan(&nextId)
51
+
if err != nil {
52
+
return err
53
+
}
54
+
55
+
pull.PullId = nextId
56
+
57
+
_, err = tx.Exec(`
58
+
insert into pulls (repo_at, owner_did, pull_id, title, patch)
59
+
values (?, ?, ?, ?, ?)
60
+
`, pull.RepoAt, pull.OwnerDid, pull.PullId, pull.Title, pull.Patch)
61
+
if err != nil {
62
+
return err
63
+
}
64
+
65
+
if err := tx.Commit(); err != nil {
66
+
return err
67
+
}
68
+
69
+
return nil
70
+
}
71
+
72
+
func SetPullAt(e Execer, repoAt syntax.ATURI, pullId int, pullAt string) error {
73
+
_, err := e.Exec(`update pulls set patch_at = ? where repo_at = ? and pull_id = ?`, pullAt, repoAt, pullId)
74
+
return err
75
+
}
76
+
77
+
func GetPullAt(e Execer, repoAt syntax.ATURI, pullId int) (string, error) {
78
+
var pullAt string
79
+
err := e.QueryRow(`select patch_at from pulls where repo_at = ? and pull_id = ?`, repoAt, pullId).Scan(&pullAt)
80
+
return pullAt, err
81
+
}
82
+
83
+
func GetPullId(e Execer, repoAt syntax.ATURI) (int, error) {
84
+
var pullId int
85
+
err := e.QueryRow(`select next_pull_id from repo_pull_seqs where repo_at = ?`, repoAt).Scan(&pullId)
86
+
return pullId - 1, err
87
+
}
88
+
89
+
func GetPullOwnerDid(e Execer, repoAt syntax.ATURI, pullId int) (string, error) {
90
+
var ownerDid string
91
+
err := e.QueryRow(`select owner_did from pulls where repo_at = ? and pull_id = ?`, repoAt, pullId).Scan(&ownerDid)
92
+
return ownerDid, err
93
+
}
94
+
95
+
func GetPulls(e Execer, repoAt syntax.ATURI) ([]Pulls, error) {
96
+
var pulls []Pulls
97
+
98
+
rows, err := e.Query(`select owner_did, pull_id, created, title, patch, open from pulls where repo_at = ? order by created desc`, repoAt)
99
+
if err != nil {
100
+
return nil, err
101
+
}
102
+
defer rows.Close()
103
+
104
+
for rows.Next() {
105
+
var pull Pulls
106
+
var createdAt string
107
+
err := rows.Scan(&pull.OwnerDid, &pull.PullId, &createdAt, &pull.Title, &pull.Patch, &pull.Open)
108
+
if err != nil {
109
+
return nil, err
110
+
}
111
+
112
+
createdTime, err := time.Parse(time.RFC3339, createdAt)
113
+
if err != nil {
114
+
return nil, err
115
+
}
116
+
pull.Created = createdTime
117
+
118
+
pulls = append(pulls, pull)
119
+
}
120
+
121
+
if err := rows.Err(); err != nil {
122
+
return nil, err
123
+
}
124
+
125
+
return pulls, nil
126
+
}
127
+
128
+
func GetPull(e Execer, repoAt syntax.ATURI, pullId int) (*Pulls, error) {
129
+
query := `select owner_did, created, title, patch, open from pulls where repo_at = ? and pull_id = ?`
130
+
row := e.QueryRow(query, repoAt, pullId)
131
+
132
+
var pull Pulls
133
+
var createdAt string
134
+
err := row.Scan(&pull.OwnerDid, &createdAt, &pull.Title, &pull.Patch, &pull.Open)
135
+
if err != nil {
136
+
return nil, err
137
+
}
138
+
139
+
createdTime, err := time.Parse(time.RFC3339, createdAt)
140
+
if err != nil {
141
+
return nil, err
142
+
}
143
+
pull.Created = createdTime
144
+
145
+
return &pull, nil
146
+
}
147
+
148
+
func GetPullWithComments(e Execer, repoAt syntax.ATURI, pullId int) (*Pulls, []PullComments, error) {
149
+
query := `select owner_did, pull_id, created, title, patch, open from pulls where repo_at = ? and pull_id = ?`
150
+
row := e.QueryRow(query, repoAt, pullId)
151
+
152
+
var pull Pulls
153
+
var createdAt string
154
+
err := row.Scan(&pull.OwnerDid, &pull.PullId, &createdAt, &pull.Title, &pull.Patch, &pull.Open)
155
+
if err != nil {
156
+
return nil, nil, err
157
+
}
158
+
159
+
createdTime, err := time.Parse(time.RFC3339, createdAt)
160
+
if err != nil {
161
+
return nil, nil, err
162
+
}
163
+
pull.Created = createdTime
164
+
165
+
comments, err := GetPullComments(e, repoAt, pullId)
166
+
if err != nil {
167
+
return nil, nil, err
168
+
}
169
+
170
+
return &pull, comments, nil
171
+
}
172
+
173
+
func NewPullComment(e Execer, comment *PullComments) error {
174
+
query := `insert into pull_comments (owner_did, repo_at, comment_at, pull_id, comment_id, body) values (?, ?, ?, ?, ?, ?)`
175
+
_, err := e.Exec(
176
+
query,
177
+
comment.OwnerDid,
178
+
comment.RepoAt,
179
+
comment.CommentAt,
180
+
comment.PullId,
181
+
comment.CommentId,
182
+
comment.Body,
183
+
)
184
+
return err
185
+
}
186
+
187
+
func GetPullComments(e Execer, repoAt syntax.ATURI, pullId int) ([]PullComments, error) {
188
+
var comments []PullComments
189
+
190
+
rows, err := e.Query(`select owner_did, pull_id, comment_id, comment_at, body, created from pull_comments where repo_at = ? and pull_id = ? order by created asc`, repoAt, pullId)
191
+
if err == sql.ErrNoRows {
192
+
return []PullComments{}, nil
193
+
}
194
+
if err != nil {
195
+
return nil, err
196
+
}
197
+
defer rows.Close()
198
+
199
+
for rows.Next() {
200
+
var comment PullComments
201
+
var createdAt string
202
+
err := rows.Scan(&comment.OwnerDid, &comment.PullId, &comment.CommentId, &comment.CommentAt, &comment.Body, &createdAt)
203
+
if err != nil {
204
+
return nil, err
205
+
}
206
+
207
+
createdAtTime, err := time.Parse(time.RFC3339, createdAt)
208
+
if err != nil {
209
+
return nil, err
210
+
}
211
+
comment.Created = createdAtTime
212
+
213
+
comments = append(comments, comment)
214
+
}
215
+
216
+
if err := rows.Err(); err != nil {
217
+
return nil, err
218
+
}
219
+
220
+
return comments, nil
221
+
}
222
+
223
+
func ClosePull(e Execer, repoAt syntax.ATURI, pullId int) error {
224
+
_, err := e.Exec(`update pulls set open = 0 where repo_at = ? and pull_id = ?`, repoAt, pullId)
225
+
return err
226
+
}
227
+
228
+
func ReopenPull(e Execer, repoAt syntax.ATURI, pullId int) error {
229
+
_, err := e.Exec(`update pulls set open = 1 where repo_at = ? and pull_id = ?`, repoAt, pullId)
230
+
return err
231
+
}
232
+
233
+
type PullCount struct {
234
+
Open int
235
+
Closed int
236
+
}
237
+
238
+
func GetPullCount(e Execer, repoAt syntax.ATURI) (PullCount, error) {
239
+
row := e.QueryRow(`
240
+
select
241
+
count(case when open = 1 then 1 end) as open_count,
242
+
count(case when open = 0 then 1 end) as closed_count
243
+
from pulls
244
+
where repo_at = ?`,
245
+
repoAt,
246
+
)
247
+
248
+
var count PullCount
249
+
if err := row.Scan(&count.Open, &count.Closed); err != nil {
250
+
return PullCount{0, 0}, err
251
+
}
252
+
253
+
return count, nil
254
+
}
+19
appview/state/signer.go
+19
appview/state/signer.go
···
155
155
156
156
return s.client.Do(req)
157
157
}
158
+
159
+
func (s *SignedClient) Merge(patch []byte, ownerDid, targetRepo, branch string) (*http.Response, error) {
160
+
const (
161
+
Method = "POST"
162
+
)
163
+
endpoint := fmt.Sprintf("/%s/%s/merge", ownerDid, targetRepo)
164
+
165
+
body, _ := json.Marshal(map[string]interface{}{
166
+
"patch": string(patch),
167
+
"branch": branch,
168
+
})
169
+
170
+
req, err := s.newRequest(Method, endpoint, body)
171
+
if err != nil {
172
+
return nil, err
173
+
}
174
+
175
+
return s.client.Do(req)
176
+
}
+3
cmd/gen.go
+3
cmd/gen.go
+14
-14
go.mod
+14
-14
go.mod
···
1
1
module github.com/sotangled/tangled
2
2
3
-
go 1.23
3
+
go 1.23.0
4
4
5
-
toolchain go1.23.4
5
+
toolchain go1.23.6
6
6
7
7
require (
8
8
github.com/Blank-Xu/sql-adapter v1.1.1
9
9
github.com/alecthomas/chroma/v2 v2.15.0
10
-
github.com/bluekeyes/go-gitdiff v0.8.0
10
+
github.com/bluekeyes/go-gitdiff v0.8.1
11
11
github.com/bluesky-social/indigo v0.0.0-20250123072624-9e3b84fdbb20
12
12
github.com/bluesky-social/jetstream v0.0.0-20241210005130-ea96859b93d1
13
13
github.com/casbin/casbin/v2 v2.103.0
14
-
github.com/cyphar/filepath-securejoin v0.3.3
14
+
github.com/cyphar/filepath-securejoin v0.4.1
15
15
github.com/dgraph-io/ristretto v0.2.0
16
16
github.com/dustin/go-humanize v1.0.1
17
17
github.com/gliderlabs/ssh v0.3.5
18
18
github.com/go-chi/chi/v5 v5.2.0
19
-
github.com/go-git/go-git/v5 v5.12.0
19
+
github.com/go-git/go-git/v5 v5.14.0
20
20
github.com/gorilla/sessions v1.4.0
21
21
github.com/ipfs/go-cid v0.4.1
22
22
github.com/mattn/go-sqlite3 v1.14.24
···
24
24
github.com/sethvargo/go-envconfig v1.1.0
25
25
github.com/whyrusleeping/cbor-gen v0.2.1-0.20241030202151-b7a6831be65e
26
26
github.com/yuin/goldmark v1.4.13
27
+
golang.org/x/crypto v0.36.0
27
28
golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028
28
29
)
29
30
30
31
require (
31
32
github.com/Microsoft/go-winio v0.6.2 // indirect
32
-
github.com/ProtonMail/go-crypto v1.0.0 // indirect
33
+
github.com/ProtonMail/go-crypto v1.1.6 // indirect
33
34
github.com/acomagu/bufpipe v1.0.4 // indirect
34
35
github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be // indirect
35
36
github.com/aymerick/douceur v0.2.0 // indirect
···
38
39
github.com/carlmjohnson/versioninfo v0.22.5 // indirect
39
40
github.com/casbin/govaluate v1.3.0 // indirect
40
41
github.com/cespare/xxhash/v2 v2.3.0 // indirect
41
-
github.com/cloudflare/circl v1.4.0 // indirect
42
+
github.com/cloudflare/circl v1.6.0 // indirect
42
43
github.com/davecgh/go-spew v1.1.1 // indirect
43
44
github.com/dlclark/regexp2 v1.11.5 // indirect
44
45
github.com/emirpasic/gods v1.18.1 // indirect
45
46
github.com/felixge/httpsnoop v1.0.4 // indirect
46
47
github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect
47
-
github.com/go-git/go-billy/v5 v5.5.0 // indirect
48
+
github.com/go-git/go-billy/v5 v5.6.2 // indirect
48
49
github.com/go-logr/logr v1.4.1 // indirect
49
50
github.com/go-logr/stdr v1.2.2 // indirect
50
51
github.com/goccy/go-json v0.10.2 // indirect
···
83
84
github.com/multiformats/go-multihash v0.2.3 // indirect
84
85
github.com/multiformats/go-varint v0.0.7 // indirect
85
86
github.com/opentracing/opentracing-go v1.2.0 // indirect
86
-
github.com/pjbgf/sha1cd v0.3.0 // indirect
87
+
github.com/pjbgf/sha1cd v0.3.2 // indirect
87
88
github.com/pkg/errors v0.9.1 // indirect
88
89
github.com/pmezard/go-difflib v1.0.0 // indirect
89
90
github.com/polydawn/refmt v0.89.1-0.20221221234430-40501e09de1f // indirect
···
92
93
github.com/prometheus/common v0.54.0 // indirect
93
94
github.com/prometheus/procfs v0.15.1 // indirect
94
95
github.com/sergi/go-diff v1.3.1 // indirect
95
-
github.com/skeema/knownhosts v1.3.0 // indirect
96
+
github.com/skeema/knownhosts v1.3.1 // indirect
96
97
github.com/spaolacci/murmur3 v1.1.0 // indirect
97
-
github.com/stretchr/testify v1.9.0 // indirect
98
+
github.com/stretchr/testify v1.10.0 // indirect
98
99
github.com/xanzy/ssh-agent v0.3.3 // indirect
99
100
gitlab.com/yawning/secp256k1-voi v0.0.0-20230925100816-f2616030848b // indirect
100
101
gitlab.com/yawning/tuplehash v0.0.0-20230713102510-df83abbf9a02 // indirect
···
105
106
go.uber.org/atomic v1.11.0 // indirect
106
107
go.uber.org/multierr v1.11.0 // indirect
107
108
go.uber.org/zap v1.26.0 // indirect
108
-
golang.org/x/crypto v0.32.0 // indirect
109
-
golang.org/x/net v0.33.0 // indirect
110
-
golang.org/x/sys v0.29.0 // indirect
109
+
golang.org/x/net v0.37.0 // indirect
110
+
golang.org/x/sys v0.31.0 // indirect
111
111
golang.org/x/time v0.5.0 // indirect
112
112
google.golang.org/protobuf v1.34.2 // indirect
113
113
gopkg.in/warnings.v0 v0.1.2 // indirect
+30
-40
go.sum
+30
-40
go.sum
···
5
5
github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY=
6
6
github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU=
7
7
github.com/ProtonMail/go-crypto v0.0.0-20230217124315-7d5c6f04bbb8/go.mod h1:I0gYDMZ6Z5GRU7l58bNFSkPTFN6Yl12dsUlAZ8xy98g=
8
-
github.com/ProtonMail/go-crypto v1.0.0 h1:LRuvITjQWX+WIfr930YHG2HNfjR1uOfyf5vE0kC2U78=
9
-
github.com/ProtonMail/go-crypto v1.0.0/go.mod h1:EjAoLdwvbIOoOQr3ihjnSoLZRtE8azugULFRteWMNc0=
8
+
github.com/ProtonMail/go-crypto v1.1.6 h1:ZcV+Ropw6Qn0AX9brlQLAUXfqLBc7Bl+f/DmNxpLfdw=
9
+
github.com/ProtonMail/go-crypto v1.1.6/go.mod h1:rA3QumHc/FZ8pAHreoekgiAbzpNsfQAosU5td4SnOrE=
10
10
github.com/acomagu/bufpipe v1.0.4 h1:e3H4WUzM3npvo5uv95QuJM3cQspFNtFBzvJ2oNjKIDQ=
11
11
github.com/acomagu/bufpipe v1.0.4/go.mod h1:mxdxdup/WdsKVreO5GpW4+M/1CE2sMG4jeGJ2sYmHc4=
12
12
github.com/alecthomas/assert/v2 v2.11.0 h1:2Q9r3ki8+JYXvGsDyBXwH3LcJ+WK5D0gc5E8vS6K3D0=
···
24
24
github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA=
25
25
github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
26
26
github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=
27
-
github.com/bluekeyes/go-gitdiff v0.8.0 h1:Nn1wfw3/XeKoc3lWk+2bEXGUHIx36kj80FM1gVcBk+o=
28
-
github.com/bluekeyes/go-gitdiff v0.8.0/go.mod h1:WWAk1Mc6EgWarCrPFO+xeYlujPu98VuLW3Tu+B/85AE=
27
+
github.com/bluekeyes/go-gitdiff v0.8.1 h1:lL1GofKMywO17c0lgQmJYcKek5+s8X6tXVNOLxy4smI=
28
+
github.com/bluekeyes/go-gitdiff v0.8.1/go.mod h1:WWAk1Mc6EgWarCrPFO+xeYlujPu98VuLW3Tu+B/85AE=
29
29
github.com/bluesky-social/indigo v0.0.0-20250123072624-9e3b84fdbb20 h1:yHusfYYi8odoCcsI6AurU+dRWb7itHAQNwt3/Rl9Vfs=
30
30
github.com/bluesky-social/indigo v0.0.0-20250123072624-9e3b84fdbb20/go.mod h1:Qp4YqWf+AQ3TwQCxV5Ls8O2tXE55zVTGVs3zTmn7BOg=
31
31
github.com/bluesky-social/jetstream v0.0.0-20241210005130-ea96859b93d1 h1:CFvRtYNSnWRAi/98M3O466t9dYuwtesNbu6FVPymRrA=
···
34
34
github.com/bmatcuk/doublestar/v4 v4.7.1 h1:fdDeAqgT47acgwd9bd9HxJRDmc9UAmPpc+2m0CXv75Q=
35
35
github.com/bmatcuk/doublestar/v4 v4.7.1/go.mod h1:xBQ8jztBU6kakFMg+8WGxn0c6z1fTSPVIjEY1Wr7jzc=
36
36
github.com/bwesterb/go-ristretto v1.2.0/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0=
37
-
github.com/bwesterb/go-ristretto v1.2.3/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0=
38
37
github.com/carlmjohnson/versioninfo v0.22.5 h1:O00sjOLUAFxYQjlN/bzYTuZiS0y6fWDQjMRvwtKgwwc=
39
38
github.com/carlmjohnson/versioninfo v0.22.5/go.mod h1:QT9mph3wcVfISUKd0i9sZfVrPviHuSF+cUtLjm2WSf8=
40
39
github.com/casbin/casbin/v2 v2.100.0/go.mod h1:LO7YPez4dX3LgoTCqSQAleQDo0S0BeZBDxYnPUl95Ng=
···
46
45
github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs=
47
46
github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
48
47
github.com/cloudflare/circl v1.1.0/go.mod h1:prBCrKB9DV4poKZY1l9zBXg2QJY7mvgRvtMxxK7fi4I=
49
-
github.com/cloudflare/circl v1.3.3/go.mod h1:5XYMA4rFBvNIrhs50XuiBJ15vF2pZn4nnUKZrLbUZFA=
50
-
github.com/cloudflare/circl v1.4.0 h1:BV7h5MgrktNzytKmWjpOtdYrf0lkkbF8YMlBGPhJQrY=
51
-
github.com/cloudflare/circl v1.4.0/go.mod h1:PDRU+oXvdD7KCtgKxW95M5Z8BpSCJXQORiZFnBQS5QU=
48
+
github.com/cloudflare/circl v1.6.0 h1:cr5JKic4HI+LkINy2lg3W2jF8sHCVTBncJr5gIIq7qk=
49
+
github.com/cloudflare/circl v1.6.0/go.mod h1:uddAzsPgqdMAYatqJ0lsjX1oECcQLIlRpzZh3pJrofs=
52
50
github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU=
53
51
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
54
-
github.com/cyphar/filepath-securejoin v0.3.3 h1:lofZkCEVFIBe0KcdQOzFs8Soy9oaHOWl4gGtPI+gCFc=
55
-
github.com/cyphar/filepath-securejoin v0.3.3/go.mod h1:8s/MCNJREmFK0H02MF6Ihv1nakJe4L/w3WZLHNkvlYM=
52
+
github.com/cyphar/filepath-securejoin v0.4.1 h1:JyxxyPEaktOD+GAnqIqTf9A8tHyAG22rowi7HkoSU1s=
53
+
github.com/cyphar/filepath-securejoin v0.4.1/go.mod h1:Sdj7gXlvMcPZsbhwhQ33GguGLDGQL7h7bg04C/+u9jI=
56
54
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
57
55
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
58
56
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
···
77
75
github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376/go.mod h1:an3vInlBmSxCcxctByoQdvwPiA7DTK7jaaFDBTtu0ic=
78
76
github.com/go-git/go-billy/v5 v5.3.1/go.mod h1:pmpqyWchKfYfrkb/UVH4otLvyi/5gJlGI4Hb3ZqZ3W0=
79
77
github.com/go-git/go-billy/v5 v5.4.1/go.mod h1:vjbugF6Fz7JIflbVpl1hJsGjSHNltrSw45YK/ukIvQg=
80
-
github.com/go-git/go-billy/v5 v5.5.0 h1:yEY4yhzCDuMGSv83oGxiBotRzhwhNr8VZyphhiu+mTU=
81
-
github.com/go-git/go-billy/v5 v5.5.0/go.mod h1:hmexnoNsr2SJU1Ju67OaNz5ASJY3+sHgFRpCtpDCKow=
78
+
github.com/go-git/go-billy/v5 v5.6.2 h1:6Q86EsPXMa7c3YZ3aLAQsMA0VlWmy43r6FHqa/UNbRM=
79
+
github.com/go-git/go-billy/v5 v5.6.2/go.mod h1:rcFC2rAsp/erv7CMz9GczHcuD0D32fWzH+MJAU+jaUU=
82
80
github.com/go-git/go-git-fixtures/v4 v4.3.1 h1:y5z6dd3qi8Hl+stezc8p3JxDkoTRqMAlKnXHuzrfjTQ=
83
81
github.com/go-git/go-git-fixtures/v4 v4.3.1/go.mod h1:8LHG1a3SRW71ettAD/jW13h8c6AqjVSeL11RAdgaqpo=
84
82
github.com/go-git/go-git/v5 v5.6.1 h1:q4ZRqQl4pR/ZJHc1L5CFjGA1a10u76aV1iC+nh+bHsk=
···
204
202
github.com/multiformats/go-varint v0.0.7 h1:sWSGR+f/eu5ABZA2ZpYKBILXTTs9JWpdEM/nEGOHFS8=
205
203
github.com/multiformats/go-varint v0.0.7/go.mod h1:r8PUYw/fD/SjBCiKOoDlGF6QawOELpZAu9eioSos/OU=
206
204
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
207
-
github.com/onsi/gomega v1.27.10 h1:naR28SdDFlqrG6kScpT8VWpu1xWY5nJRCF3XaYyBjhI=
208
-
github.com/onsi/gomega v1.27.10/go.mod h1:RsS8tutOdbdgzbPtzzATp12yT7kM5I5aElG3evPbQ0M=
205
+
github.com/onsi/gomega v1.34.1 h1:EUMJIKUjM8sKjYbtxQI9A4z2o+rruxnzNvpknOXie6k=
206
+
github.com/onsi/gomega v1.34.1/go.mod h1:kU1QgUvBDLXBJq618Xvm2LUX6rSAfRaFRTcdOeDLwwY=
209
207
github.com/opentracing/opentracing-go v1.2.0 h1:uEJPy/1a5RIPAJ0Ov+OIO8OxWu77jEv+1B0VhjKrZUs=
210
208
github.com/opentracing/opentracing-go v1.2.0/go.mod h1:GxEUsuufX4nBwe+T+Wl9TAgYrxe9dPLANfrWvHYVTgc=
211
-
github.com/pjbgf/sha1cd v0.3.0 h1:4D5XXmUUBUl/xQ6IjCkEAbqXskkq/4O7LmGn0AqMDs4=
212
209
github.com/pjbgf/sha1cd v0.3.0/go.mod h1:nZ1rrWOcGJ5uZgEEVL1VUM9iRQiZvWdbZjkKyFzPPsI=
210
+
github.com/pjbgf/sha1cd v0.3.2 h1:a9wb0bp1oC2TGwStyn0Umc/IGKQnEgF0vVaZ8QF8eo4=
211
+
github.com/pjbgf/sha1cd v0.3.2/go.mod h1:zQWigSxVmsHEZow5qaLtPYxpcKMMQpa09ixqBxuCS6A=
213
212
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
214
213
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
215
214
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
···
236
235
github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc=
237
236
github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0=
238
237
github.com/skeema/knownhosts v1.1.0/go.mod h1:sKFq3RD6/TKZkSWn8boUbDC7Qkgcv+8XXijpFO6roag=
239
-
github.com/skeema/knownhosts v1.3.0 h1:AM+y0rI04VksttfwjkSTNQorvGqmwATnvnAHpSgc0LY=
240
-
github.com/skeema/knownhosts v1.3.0/go.mod h1:sPINvnADmT/qYH1kfv+ePMmOBTH6Tbl7b5LvTDjFK7M=
238
+
github.com/skeema/knownhosts v1.3.1 h1:X2osQ+RAjK76shCbvhHHHVl3ZlgDm8apHEHFqRjnBY8=
239
+
github.com/skeema/knownhosts v1.3.1/go.mod h1:r7KTdC8l4uxWRyK2TpQZ/1o5HaSzh06ePQNxPwTcfiY=
241
240
github.com/smartystreets/assertions v1.2.0 h1:42S6lae5dvLc7BrLu/0ugRtcFVjoJNMC/N3yZFZkDFs=
242
241
github.com/smartystreets/assertions v1.2.0/go.mod h1:tcbTF8ujkAEcZ8TElKY+i30BzYlVhC/LOxJk7iOWnoo=
243
242
github.com/smartystreets/goconvey v1.7.2 h1:9RBaZCeXEQ3UselpuwUQHltGVXvdwm6cv1hgR6gDIPg=
···
249
248
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
250
249
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
251
250
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
252
-
github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg=
253
-
github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
251
+
github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA=
252
+
github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
254
253
github.com/urfave/cli v1.22.10/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0=
255
254
github.com/warpfork/go-wish v0.0.0-20220906213052-39a1cc7a02d0 h1:GDDkbFiaK8jsSDJfjId/PEGEShv6ugrt4kYsC5UIDaQ=
256
255
github.com/warpfork/go-wish v0.0.0-20220906213052-39a1cc7a02d0/go.mod h1:x6AKhvSSexNrVSrViXSHUEbICjmGXhtgABaHIySUSGw=
···
301
300
golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
302
301
golang.org/x/crypto v0.0.0-20220826181053-bd7e27e6170d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
303
302
golang.org/x/crypto v0.1.0/go.mod h1:RecgLatLF4+eUMCP1PoPZQb+cVrJcOPbHkTkbkB9sbw=
304
-
golang.org/x/crypto v0.3.1-0.20221117191849-2c476679df9a/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4=
305
303
golang.org/x/crypto v0.6.0/go.mod h1:OFC/31mSvZgRz0V1QTNCzfAI1aIRzbiufJtkMIlEp58=
306
-
golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU=
307
-
golang.org/x/crypto v0.32.0 h1:euUpcYgM8WcP71gNpTqQCn6rC2t6ULUPiOzfWaXVVfc=
308
-
golang.org/x/crypto v0.32.0/go.mod h1:ZnnJkOaASj8g0AjIduWNlq2NRxL0PlBrbKVyZ6V/Ugc=
304
+
golang.org/x/crypto v0.36.0 h1:AnAEvhDddvBdpY+uR+MyHmuZzzNqXSe/GvuDeob5L34=
305
+
golang.org/x/crypto v0.36.0/go.mod h1:Y4J0ReaxCR1IMaabaSMugxJES1EpwhBHhv2bDHklZvc=
306
+
golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 h1:2dVuKD2vS7b0QIHQbpyTISPd0LeHDbnYEryqj5Q1ug8=
307
+
golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56/go.mod h1:M4RDyNAINzryxdtnbRXRL/OHtkFuWGRjvuhBJpk2IlY=
309
308
golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
310
309
golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc=
311
310
golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
···
313
312
golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
314
313
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
315
314
golang.org/x/mod v0.6.0/go.mod h1:4mET923SAdbXp2ki8ey+zGs1SLqsuM2Y0uvdZR/fUNI=
316
-
golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
317
315
golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
318
316
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
319
317
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
···
325
323
golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
326
324
golang.org/x/net v0.0.0-20220826154423-83b083e8dc8b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk=
327
325
golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco=
328
-
golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY=
329
326
golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
330
327
golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
331
-
golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc=
332
-
golang.org/x/net v0.33.0 h1:74SYHlV8BIgHIFC/LrYkOGIwL19eTYXQ5wc6TBuO36I=
333
-
golang.org/x/net v0.33.0/go.mod h1:HXLR5J+9DxmrqMwG9qjGCxZ+zKXxBru04zlTvWlWuN4=
328
+
golang.org/x/net v0.37.0 h1:1zLorHbz+LYj7MQlSf1+2tPIIgibq2eL5xkrGk6f+2c=
329
+
golang.org/x/net v0.37.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8=
334
330
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
335
331
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
336
332
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
337
333
golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
338
334
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
339
-
golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
340
335
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
341
336
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
342
337
golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
···
357
352
golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
358
353
golang.org/x/sys v0.0.0-20220825204002-c680a09ffe64/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
359
354
golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
360
-
golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
361
355
golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
362
356
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
363
357
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
364
-
golang.org/x/sys v0.29.0 h1:TPYlXGxvx1MGTn2GiZDhnjPA9wZzZeGKHHmKhHYvgaU=
365
-
golang.org/x/sys v0.29.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
358
+
golang.org/x/sys v0.31.0 h1:ioabZlmFYtWhL+TRYpcnNlLwhyxaM9kWTDEmfnprqik=
359
+
golang.org/x/sys v0.31.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
366
360
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
367
361
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
368
362
golang.org/x/term v0.0.0-20220722155259-a9ba230a4035/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
369
363
golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
370
-
golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc=
371
364
golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
372
-
golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U=
373
-
golang.org/x/term v0.28.0 h1:/Ts8HFuMR2E6IP/jlo7QVLZHggjKQbhu/7H0LJFr3Gg=
374
-
golang.org/x/term v0.28.0/go.mod h1:Sw/lC2IAUZ92udQNf3WodGtn4k/XoLyZoh8v/8uiwek=
365
+
golang.org/x/term v0.30.0 h1:PQ39fJZ+mfadBm0y5WlL4vlM7Sx1Hgf13sMIY2+QS9Y=
366
+
golang.org/x/term v0.30.0/go.mod h1:NYYFdzHoI5wRh/h5tDMdMqCqPJZEuNqVR5xJLd/n67g=
375
367
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
376
368
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
377
369
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
378
370
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
379
371
golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
380
372
golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
381
-
golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
382
-
golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo=
383
-
golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ=
373
+
golang.org/x/text v0.23.0 h1:D71I7dUrlY+VX0gQShAThNGHFxZ13dGLBHQLVl1mJlY=
374
+
golang.org/x/text v0.23.0/go.mod h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4=
384
375
golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk=
385
376
golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM=
386
377
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
···
396
387
golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
397
388
golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
398
389
golang.org/x/tools v0.2.0/go.mod h1:y4OqIKeOV/fWJetJ8bXPU1sEVniLMIyDAZWeHdV+NTA=
399
-
golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU=
400
390
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
401
391
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
402
392
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+12
lexicons/pulls/closed.json
+12
lexicons/pulls/closed.json
+40
lexicons/pulls/comment.json
+40
lexicons/pulls/comment.json
···
1
+
{
2
+
"lexicon": 1,
3
+
"id": "sh.tangled.repo.pull.comment",
4
+
"needsCbor": true,
5
+
"needsType": true,
6
+
"defs": {
7
+
"main": {
8
+
"type": "record",
9
+
"key": "tid",
10
+
"record": {
11
+
"type": "object",
12
+
"required": ["pull"],
13
+
"properties": {
14
+
"pull": {
15
+
"type": "string",
16
+
"format": "at-uri"
17
+
},
18
+
"repo": {
19
+
"type": "string",
20
+
"format": "at-uri"
21
+
},
22
+
"commentId": {
23
+
"type": "integer"
24
+
},
25
+
"owner": {
26
+
"type": "string",
27
+
"format": "did"
28
+
},
29
+
"body": {
30
+
"type": "string"
31
+
},
32
+
"createdAt": {
33
+
"type": "string",
34
+
"format": "datetime"
35
+
}
36
+
}
37
+
}
38
+
}
39
+
}
40
+
}
+12
lexicons/pulls/merged.json
+12
lexicons/pulls/merged.json
+12
lexicons/pulls/open.json
+12
lexicons/pulls/open.json
+42
lexicons/pulls/patch.json
+42
lexicons/pulls/patch.json
···
1
+
{
2
+
"lexicon": 1,
3
+
"id": "sh.tangled.repo.pull.patch",
4
+
"needsCbor": true,
5
+
"needsType": true,
6
+
"defs": {
7
+
"main": {
8
+
"type": "record",
9
+
"key": "tid",
10
+
"record": {
11
+
"type": "object",
12
+
"required": ["targetRepo", "pullId", "title", "patch"],
13
+
"properties": {
14
+
"targetRepo": {
15
+
"type": "string",
16
+
"format": "at-uri"
17
+
},
18
+
"sourceRepo": {
19
+
"type": "string",
20
+
"format": "at-uri"
21
+
},
22
+
"pullId": {
23
+
"type": "integer"
24
+
},
25
+
"title": {
26
+
"type": "string"
27
+
},
28
+
"body": {
29
+
"type": "string"
30
+
},
31
+
"createdAt": {
32
+
"type": "string",
33
+
"format": "datetime"
34
+
},
35
+
"patch": {
36
+
"type": "string"
37
+
}
38
+
}
39
+
}
40
+
}
41
+
}
42
+
}
+32
lexicons/pulls/state.json
+32
lexicons/pulls/state.json
···
1
+
{
2
+
"lexicon": 1,
3
+
"id": "sh.tangled.repo.pull.state",
4
+
"needsCbor": true,
5
+
"needsType": true,
6
+
"defs": {
7
+
"main": {
8
+
"type": "record",
9
+
"key": "tid",
10
+
"record": {
11
+
"type": "object",
12
+
"required": ["pull"],
13
+
"properties": {
14
+
"pull": {
15
+
"type": "string",
16
+
"format": "at-uri"
17
+
},
18
+
"state": {
19
+
"type": "string",
20
+
"description": "state of the pull request",
21
+
"knownValues": [
22
+
"sh.tangled.repo.pull.state.open",
23
+
"sh.tangled.repo.pull.state.closed",
24
+
"sh.tangled.repo.pull.state.merged"
25
+
],
26
+
"default": "sh.tangled.repo.pull.state.open"
27
+
}
28
+
}
29
+
}
30
+
}
31
+
}
32
+
}