event

package
v1.54.10 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 1, 2024 License: MIT Imports: 6 Imported by: 0

Documentation

Overview

Example (EventChain)

Example_eventChain creates three events, chains them together and stores them via ipld.DefaultLinkSystem.

package main

import (
	"context"
	"fmt"

	"github.com/functionland/go-fula/event"
	"github.com/ipfs/go-cid"
	"github.com/ipld/go-ipld-prime"
	_ "github.com/ipld/go-ipld-prime/codec/dagcbor"
	cidlink "github.com/ipld/go-ipld-prime/linking/cid"
	"github.com/ipld/go-ipld-prime/node/bindnode"
	"github.com/ipld/go-ipld-prime/storage/memstore"
	"github.com/multiformats/go-multicodec"
)

var lp = cidlink.LinkPrototype{
	Prefix: cid.Prefix{
		Version:  1,
		Codec:    uint64(multicodec.DagCbor),
		MhType:   uint64(multicodec.Sha2_256),
		MhLength: -1,
	},
}

// Example_eventChain creates three events, chains them together and stores them via ipld.DefaultLinkSystem.
func main() {
	first := &event.Event{
		Version:   event.Version0,
		Peer:      "1",
		Signature: []byte("sig1"),
	}
	second := &event.Event{
		Version:   event.Version0,
		Peer:      "2",
		Signature: []byte("sig2"),
	}
	third := &event.Event{
		Version:   event.Version0,
		Peer:      "3",
		Signature: []byte("sig3"),
	}

	ls := cidlink.DefaultLinkSystem()
	store := &memstore.Store{}
	ls.SetReadStorage(store)
	ls.SetWriteStorage(store)

	ctx := context.Background()

	n := bindnode.Wrap(first, event.Prototypes.Event.Type())
	if l, err := ls.Store(ipld.LinkContext{Ctx: ctx}, lp, n); err != nil {
		panic(err)
	} else {
		second.Previous = l
		fmt.Printf("Link to 1st event: %s\n", l.String())
	}

	n = bindnode.Wrap(second, event.Prototypes.Event.Type())
	if l, err := ls.Store(ipld.LinkContext{Ctx: ctx}, lp, n); err != nil {
		panic(err)
	} else {
		third.Previous = l
		fmt.Printf("Link to 2nd event: %s\n", l.String())
	}

	n = bindnode.Wrap(third, event.Prototypes.Event.Type())
	if l, err := ls.Store(ipld.LinkContext{Ctx: ctx}, lp, n); err != nil {
		panic(err)
	} else {
		fmt.Printf("Link to 3rd event: %s\n", l.String())
	}

}
Output:

Link to 1st event: bafyreid3ehnrqi5bgyy73s42kevtcoa4tjol2rzwytnfk6222aict4hkam
Link to 2nd event: bafyreiaip6euzqqan5ujs322xe7ih653onk4lib2lsykeyvkd4uhcl6aea
Link to 3rd event: bafyreie7ycr7yqqprsn5k4zcuyvo6ap47dl2hwpea5dfo3owpdkj6ovtvm

Index

Examples

Constants

View Source
const Version0 = "0"

Variables

View Source
var (
	Prototypes struct {
		Event schema.TypedPrototype
	}
)

Functions

This section is empty.

Types

type Event

type Event struct {
	Version   string
	Previous  ipld.Link
	Peer      core.PeerID
	Signature []byte
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL