github.com/s7techlab/cckit@v0.10.5/state/mapping/testdata/cc_indexes.go (about) 1 package testdata 2 3 import ( 4 "github.com/s7techlab/cckit/extensions/owner" 5 "github.com/s7techlab/cckit/router" 6 "github.com/s7techlab/cckit/router/param/defparam" 7 "github.com/s7techlab/cckit/state/mapping" 8 "github.com/s7techlab/cckit/state/mapping/testdata/schema" 9 ) 10 11 var ( 12 EntityWithIndexesStateMapping = mapping.StateMappings{}. 13 Add(&schema.EntityWithIndexes{}, 14 mapping.PKeyId(), 15 mapping.List(&schema.EntityWithIndexesList{}), 16 mapping.UniqKey(`ExternalId`), 17 mapping.WithIndex(&mapping.StateIndexDef{ 18 Name: `OptionalExternalIds`, 19 Required: false, 20 Multi: true, 21 })) 22 ) 23 24 func NewIndexesCC() *router.Chaincode { 25 r := router.New("indexes") 26 27 r.Use(mapping.MapStates(EntityWithIndexesStateMapping)) 28 29 r.Init(owner.InvokeSetFromCreator) 30 31 r. 32 Query("list", queryListIndexes). 33 Query("get", queryByIdIndexes, defparam.String()). 34 Query("getByExternalId", queryByExternalId, defparam.String()). 35 Query("getByOptMultiExternalId", queryByOptMultiExternalId, defparam.String()). 36 Invoke("create", invokeCreateIndexes, defparam.Proto(&schema.CreateEntityWithIndexes{})). 37 Invoke("update", invokeUpdateIndexes, defparam.Proto(&schema.UpdateEntityWithIndexes{})). 38 Invoke("delete", invokeDeleteIndexes, defparam.String()) 39 40 return router.NewChaincode(r) 41 } 42 43 func queryByIdIndexes(c router.Context) (interface{}, error) { 44 return c.State().Get(&schema.EntityWithIndexes{Id: c.Param().(string)}) 45 } 46 47 func queryListIndexes(c router.Context) (interface{}, error) { 48 return c.State().List(&schema.EntityWithIndexes{}) 49 } 50 51 func invokeCreateIndexes(c router.Context) (interface{}, error) { 52 create := c.Param().(*schema.CreateEntityWithIndexes) 53 entity := &schema.EntityWithIndexes{ 54 Id: create.Id, 55 ExternalId: create.ExternalId, 56 RequiredExternalIds: create.RequiredExternalIds, 57 OptionalExternalIds: create.OptionalExternalIds, 58 Value: create.Value, 59 } 60 61 return entity, c.State().Insert(entity) 62 } 63 64 func invokeUpdateIndexes(c router.Context) (interface{}, error) { 65 update := c.Param().(*schema.UpdateEntityWithIndexes) 66 entity := &schema.EntityWithIndexes{ 67 Id: update.Id, 68 ExternalId: update.ExternalId, 69 RequiredExternalIds: update.RequiredExternalIds, 70 OptionalExternalIds: update.OptionalExternalIds, 71 Value: update.Value, 72 } 73 74 return entity, c.State().Put(entity) 75 } 76 77 func invokeDeleteIndexes(c router.Context) (interface{}, error) { 78 return nil, c.State().(mapping.MappedState).Delete(&schema.EntityWithIndexes{Id: c.Param().(string)}) 79 } 80 81 func queryByExternalId(c router.Context) (interface{}, error) { 82 externalId := c.Param().(string) 83 return c.State().(mapping.MappedState).GetByKey( 84 &schema.EntityWithIndexes{}, "ExternalId", []string{externalId}) 85 } 86 87 func queryByOptMultiExternalId(c router.Context) (interface{}, error) { 88 externalId := c.Param().(string) 89 return c.State().(mapping.MappedState).GetByKey( 90 &schema.EntityWithIndexes{}, "OptionalExternalIds", []string{externalId}) 91 }