diff --git a/go.mod b/go.mod index f6627f3..c2bc224 100644 --- a/go.mod +++ b/go.mod @@ -6,7 +6,7 @@ require ( filippo.io/edwards25519 v1.1.0 github.com/aws/aws-sdk-go-v2 v0.17.0 github.com/code-payments/code-vm-indexer v1.2.0 - github.com/code-payments/ocp-protobuf-api v0.13.0 + github.com/code-payments/ocp-protobuf-api v0.14.0 github.com/emirpasic/gods v1.12.0 github.com/envoyproxy/protoc-gen-validate v1.2.1 github.com/golang/protobuf v1.5.4 diff --git a/go.sum b/go.sum index 955fbb5..efc5573 100644 --- a/go.sum +++ b/go.sum @@ -78,8 +78,8 @@ github.com/cockroachdb/apd v1.1.0 h1:3LFP3629v+1aKXU5Q37mxmRxX/pIu1nijXydLShEq5I github.com/cockroachdb/apd v1.1.0/go.mod h1:8Sl8LxpKi29FqWXR16WEFZRNSz3SoPzUzeMeY4+DwBQ= github.com/code-payments/code-vm-indexer v1.2.0 h1:rSHpBMiT9BKgmKcXg/VIoi/h0t7jNxGx07Qz59m+6Q0= github.com/code-payments/code-vm-indexer v1.2.0/go.mod h1:vn91YN2qNqb+gGJeZe2+l+TNxVmEEiRHXXnIn2Y40h8= -github.com/code-payments/ocp-protobuf-api v0.13.0 h1:TotuJZLLlpLKqgDGa9VQzkxiforFw4K+UsV//i6W28M= -github.com/code-payments/ocp-protobuf-api v0.13.0/go.mod h1:tw6BooY5a8l6CtSZnKOruyKII0W04n89pcM4BizrgG8= +github.com/code-payments/ocp-protobuf-api v0.14.0 h1:M3lYKl2Af5B+HZkhPzKt00+PENy8KpC4YcKB8THb7V0= +github.com/code-payments/ocp-protobuf-api v0.14.0/go.mod h1:tw6BooY5a8l6CtSZnKOruyKII0W04n89pcM4BizrgG8= github.com/containerd/continuity v0.0.0-20190827140505-75bee3e2ccb6 h1:NmTXa/uVnDyp0TY5MKi197+3HWcnYWfnHGyaFthlnGw= github.com/containerd/continuity v0.0.0-20190827140505-75bee3e2ccb6/go.mod h1:GL3xCUCBDV3CZiTSEKksMWbLE66hEyuu9qyDOOqM47Y= github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= diff --git a/ocp/data/currency/model.go b/ocp/data/currency/model.go index 7b393ff..51e50ab 100644 --- a/ocp/data/currency/model.go +++ b/ocp/data/currency/model.go @@ -26,6 +26,7 @@ type MetadataRecord struct { Symbol string Description string ImageUrl string + BillColors []string Seed string @@ -155,6 +156,7 @@ func (m *MetadataRecord) Clone() *MetadataRecord { Symbol: m.Symbol, Description: m.Description, ImageUrl: m.ImageUrl, + BillColors: append([]string(nil), m.BillColors...), Seed: m.Seed, @@ -192,6 +194,7 @@ func (m *MetadataRecord) CopyTo(dst *MetadataRecord) { dst.Symbol = m.Symbol dst.Description = m.Description dst.ImageUrl = m.ImageUrl + dst.BillColors = append([]string(nil), m.BillColors...) dst.Seed = m.Seed diff --git a/ocp/data/currency/postgres/model.go b/ocp/data/currency/postgres/model.go index a277353..35a172d 100644 --- a/ocp/data/currency/postgres/model.go +++ b/ocp/data/currency/postgres/model.go @@ -3,6 +3,7 @@ package postgres import ( "context" "database/sql" + "strings" "time" "github.com/jmoiron/sqlx" @@ -55,6 +56,7 @@ type metadataModel struct { Symbol string `db:"symbol"` Description string `db:"description"` ImageUrl string `db:"image_url"` + BillColors string `db:"bill_colors"` Seed string `db:"seed"` @@ -96,6 +98,7 @@ func toMetadataModel(obj *currency.MetadataRecord) (*metadataModel, error) { Symbol: obj.Symbol, Description: obj.Description, ImageUrl: obj.ImageUrl, + BillColors: strings.Join(obj.BillColors, ","), Seed: obj.Seed, @@ -127,6 +130,11 @@ func toMetadataModel(obj *currency.MetadataRecord) (*metadataModel, error) { } func fromMetadataModel(obj *metadataModel) *currency.MetadataRecord { + var billColors []string + if obj.BillColors != "" { + billColors = strings.Split(obj.BillColors, ",") + } + return ¤cy.MetadataRecord{ Id: uint64(obj.Id.Int64), @@ -134,6 +142,7 @@ func fromMetadataModel(obj *metadataModel) *currency.MetadataRecord { Symbol: obj.Symbol, Description: obj.Description, ImageUrl: obj.ImageUrl, + BillColors: billColors, Seed: obj.Seed, @@ -243,13 +252,14 @@ func (m *metadataModel) dbSave(ctx context.Context, db *sqlx.DB) error { return pgutil.ExecuteInTx(ctx, db, sql.LevelDefault, func(tx *sqlx.Tx) error { err := tx.QueryRowxContext(ctx, `INSERT INTO `+metadataTableName+` - (name, symbol, description, image_url, seed, authority, mint, mint_bump, decimals, currency_config, currency_config_bump, liquidity_pool, liquidity_pool_bump, vault_mint, vault_mint_bump, vault_core, vault_core_bump, sell_fee_bps, alt, created_by, created_at) - VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15, $16, $17, $18, $19, $20, $21) - RETURNING id, name, symbol, description, image_url, seed, authority, mint, mint_bump, decimals, currency_config, currency_config_bump, liquidity_pool, liquidity_pool_bump, vault_mint, vault_mint_bump, vault_core, vault_core_bump, sell_fee_bps, alt, created_by, created_at`, + (name, symbol, description, image_url, bill_colors, seed, authority, mint, mint_bump, decimals, currency_config, currency_config_bump, liquidity_pool, liquidity_pool_bump, vault_mint, vault_mint_bump, vault_core, vault_core_bump, sell_fee_bps, alt, created_by, created_at) + VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15, $16, $17, $18, $19, $20, $21, $22) + RETURNING id, name, symbol, description, image_url, bill_colors, seed, authority, mint, mint_bump, decimals, currency_config, currency_config_bump, liquidity_pool, liquidity_pool_bump, vault_mint, vault_mint_bump, vault_core, vault_core_bump, sell_fee_bps, alt, created_by, created_at`, m.Name, m.Symbol, m.Description, m.ImageUrl, + m.BillColors, m.Seed, m.Authority, m.Mint, @@ -343,7 +353,7 @@ func dbGetAllExchangeRatesForRange(ctx context.Context, db *sqlx.DB, symbol stri func dbGetMetadataByMint(ctx context.Context, db *sqlx.DB, mint string) (*metadataModel, error) { res := &metadataModel{} err := db.GetContext(ctx, res, - `SELECT id, name, symbol, description, image_url, seed, authority, mint, mint_bump, decimals, currency_config, currency_config_bump, liquidity_pool, liquidity_pool_bump, vault_mint, vault_mint_bump, vault_core, vault_core_bump, sell_fee_bps, alt, created_by, created_at + `SELECT id, name, symbol, description, image_url, bill_colors, seed, authority, mint, mint_bump, decimals, currency_config, currency_config_bump, liquidity_pool, liquidity_pool_bump, vault_mint, vault_mint_bump, vault_core, vault_core_bump, sell_fee_bps, alt, created_by, created_at FROM `+metadataTableName+` WHERE mint = $1`, mint, diff --git a/ocp/data/currency/postgres/store_test.go b/ocp/data/currency/postgres/store_test.go index 0208f30..f4631b7 100644 --- a/ocp/data/currency/postgres/store_test.go +++ b/ocp/data/currency/postgres/store_test.go @@ -37,6 +37,7 @@ const ( symbol TEXT NOT NULL, description TEXT NOT NULL, image_url TEXT NOT NULL, + bill_colors TEXT NOT NULL DEFAULT '', seed TEXT UNIQUE NOT NULL, diff --git a/ocp/data/currency/tests/tests.go b/ocp/data/currency/tests/tests.go index 29947de..43075ca 100644 --- a/ocp/data/currency/tests/tests.go +++ b/ocp/data/currency/tests/tests.go @@ -142,6 +142,7 @@ func testMetadataRoundTrip(t *testing.T, s currency.Store) { Symbol: "JFY", Description: "A test currency for Flipcash created by Jeff Yanta so we can eat our own dog food as we build out the platform. Pun intended", ImageUrl: "https://flipcash-currency-assets.s3.us-east-1.amazonaws.com/52MNGpgvydSwCtC2H4qeiZXZ1TxEuRVCRGa8LAfk2kSj/icon.png", + BillColors: []string{"#19191A", "#FFFFFF"}, Seed: "H7WNaHtCa5h2k7AwZ8DbdLfM6bU2bi2jmWiUkFqgeBYk", @@ -282,6 +283,7 @@ func assertEquivalentMetadataRecords(t *testing.T, obj1, obj2 *currency.Metadata assert.Equal(t, obj1.Symbol, obj2.Symbol) assert.Equal(t, obj1.Description, obj2.Description) assert.Equal(t, obj1.ImageUrl, obj2.ImageUrl) + assert.Equal(t, obj1.BillColors, obj2.BillColors) assert.Equal(t, obj1.Seed, obj2.Seed) assert.Equal(t, obj1.Authority, obj2.Authority) assert.Equal(t, obj1.Mint, obj2.Mint) diff --git a/ocp/rpc/currency/server.go b/ocp/rpc/currency/server.go index be45563..efd9027 100644 --- a/ocp/rpc/currency/server.go +++ b/ocp/rpc/currency/server.go @@ -196,6 +196,18 @@ func (s *currencyServer) GetMints(ctx context.Context, req *currencypb.GetMintsR }, CreatedAt: timestamppb.New(metadataRecord.CreatedAt), } + + billColors := metadataRecord.BillColors + if len(billColors) == 0 { + billColors = []string{"#AAAAAA", "#2C2C2C"} + } + var protoColors []*currencypb.Color + for _, hex := range billColors { + protoColors = append(protoColors, ¤cypb.Color{Hex: hex}) + } + protoMetadata.BillCustomization = ¤cypb.BillCustomization{ + Colors: protoColors, + } } resp.MetadataByAddress[mintAccount.PublicKey().ToBase58()] = protoMetadata