rangedbapi

package
v0.2.3 Latest Latest
Warning

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

Go to latest
Published: Apr 13, 2020 License: BSD-3-Clause Imports: 13 Imported by: 1

Documentation

Overview

Example (GetAllEvents)
// Given
shortuuid.SetRand(100)
inMemoryStore := inmemorystore.New(
	inmemorystore.WithClock(sequentialclock.New()),
)
api := rangedbapi.New(rangedbapi.WithStore(inMemoryStore))

server := httptest.NewServer(api)
defer server.Close()

PrintError(
	inMemoryStore.Save(rangedbtest.ThingWasDone{ID: "605f20348fb940e386c171d51c877bf1", Number: 100}, nil),
	inMemoryStore.Save(rangedbtest.AnotherWasComplete{ID: "a095086e52bc4617a1763a62398cd645"}, nil),
)
url := fmt.Sprintf("%s/events.json", server.URL)

// When
response, err := http.Get(url)
PrintError(err)
defer Close(response.Body)

body, err := ioutil.ReadAll(response.Body)
PrintError(err)

fmt.Println(jsontools.PrettyJSON(body))
Output:
[
  {
    "aggregateType": "thing",
    "aggregateID": "605f20348fb940e386c171d51c877bf1",
    "globalSequenceNumber": 0,
    "sequenceNumber": 0,
    "insertTimestamp": 0,
    "eventID": "d2ba8e70072943388203c438d4e94bf3",
    "eventType": "ThingWasDone",
    "data": {
      "id": "605f20348fb940e386c171d51c877bf1",
      "number": 100
    },
    "metadata": null
  },
  {
    "aggregateType": "another",
    "aggregateID": "a095086e52bc4617a1763a62398cd645",
    "globalSequenceNumber": 1,
    "sequenceNumber": 0,
    "insertTimestamp": 1,
    "eventID": "99cbd88bbcaf482ba1cc96ed12541707",
    "eventType": "AnotherWasComplete",
    "data": {
      "id": "a095086e52bc4617a1763a62398cd645"
    },
    "metadata": null
  }
]
Example (GetEventsByAggregateType)
// Given
shortuuid.SetRand(100)
inMemoryStore := inmemorystore.New(
	inmemorystore.WithClock(sequentialclock.New()),
)
api := rangedbapi.New(rangedbapi.WithStore(inMemoryStore))

server := httptest.NewServer(api)
defer server.Close()

PrintError(
	inMemoryStore.Save(rangedbtest.ThingWasDone{ID: "605f20348fb940e386c171d51c877bf1", Number: 100}, nil),
	inMemoryStore.Save(rangedbtest.AnotherWasComplete{ID: "a095086e52bc4617a1763a62398cd645"}, nil),
)
url := fmt.Sprintf("%s/events/thing.json", server.URL)

// When
response, err := http.Get(url)
PrintError(err)
defer Close(response.Body)

body, err := ioutil.ReadAll(response.Body)
PrintError(err)

fmt.Println(jsontools.PrettyJSON(body))
Output:
[
  {
    "aggregateType": "thing",
    "aggregateID": "605f20348fb940e386c171d51c877bf1",
    "globalSequenceNumber": 0,
    "sequenceNumber": 0,
    "insertTimestamp": 0,
    "eventID": "d2ba8e70072943388203c438d4e94bf3",
    "eventType": "ThingWasDone",
    "data": {
      "id": "605f20348fb940e386c171d51c877bf1",
      "number": 100
    },
    "metadata": null
  }
]
Example (GetEventsByAggregateTypes)
// Given
shortuuid.SetRand(100)
inMemoryStore := inmemorystore.New(
	inmemorystore.WithClock(sequentialclock.New()),
)
api := rangedbapi.New(rangedbapi.WithStore(inMemoryStore))

server := httptest.NewServer(api)
defer server.Close()

PrintError(
	inMemoryStore.Save(rangedbtest.ThingWasDone{ID: "605f20348fb940e386c171d51c877bf1", Number: 100}, nil),
	inMemoryStore.Save(rangedbtest.AnotherWasComplete{ID: "a095086e52bc4617a1763a62398cd645"}, nil),
)
url := fmt.Sprintf("%s/events/thing,another.json", server.URL)

// When
response, err := http.Get(url)
PrintError(err)
defer Close(response.Body)

body, err := ioutil.ReadAll(response.Body)
PrintError(err)

fmt.Println(jsontools.PrettyJSON(body))
Output:
[
  {
    "aggregateType": "thing",
    "aggregateID": "605f20348fb940e386c171d51c877bf1",
    "globalSequenceNumber": 0,
    "sequenceNumber": 0,
    "insertTimestamp": 0,
    "eventID": "d2ba8e70072943388203c438d4e94bf3",
    "eventType": "ThingWasDone",
    "data": {
      "id": "605f20348fb940e386c171d51c877bf1",
      "number": 100
    },
    "metadata": null
  },
  {
    "aggregateType": "another",
    "aggregateID": "a095086e52bc4617a1763a62398cd645",
    "globalSequenceNumber": 1,
    "sequenceNumber": 0,
    "insertTimestamp": 1,
    "eventID": "99cbd88bbcaf482ba1cc96ed12541707",
    "eventType": "AnotherWasComplete",
    "data": {
      "id": "a095086e52bc4617a1763a62398cd645"
    },
    "metadata": null
  }
]
Example (GetEventsByStream)
// Given
shortuuid.SetRand(100)
inMemoryStore := inmemorystore.New(
	inmemorystore.WithClock(sequentialclock.New()),
)
api := rangedbapi.New(rangedbapi.WithStore(inMemoryStore))

server := httptest.NewServer(api)
defer server.Close()

PrintError(
	inMemoryStore.Save(rangedbtest.ThingWasDone{ID: "605f20348fb940e386c171d51c877bf1", Number: 100}, nil),
	inMemoryStore.Save(rangedbtest.ThingWasDone{ID: "605f20348fb940e386c171d51c877bf1", Number: 200}, nil),
	inMemoryStore.Save(rangedbtest.AnotherWasComplete{ID: "a095086e52bc4617a1763a62398cd645"}, nil),
)
url := fmt.Sprintf("%s/events/thing/605f20348fb940e386c171d51c877bf1.json", server.URL)

// When
response, err := http.Get(url)
PrintError(err)
defer Close(response.Body)

body, err := ioutil.ReadAll(response.Body)
PrintError(err)

fmt.Println(jsontools.PrettyJSON(body))
Output:
[
  {
    "aggregateType": "thing",
    "aggregateID": "605f20348fb940e386c171d51c877bf1",
    "globalSequenceNumber": 0,
    "sequenceNumber": 0,
    "insertTimestamp": 0,
    "eventID": "d2ba8e70072943388203c438d4e94bf3",
    "eventType": "ThingWasDone",
    "data": {
      "id": "605f20348fb940e386c171d51c877bf1",
      "number": 100
    },
    "metadata": null
  },
  {
    "aggregateType": "thing",
    "aggregateID": "605f20348fb940e386c171d51c877bf1",
    "globalSequenceNumber": 1,
    "sequenceNumber": 1,
    "insertTimestamp": 1,
    "eventID": "99cbd88bbcaf482ba1cc96ed12541707",
    "eventType": "ThingWasDone",
    "data": {
      "id": "605f20348fb940e386c171d51c877bf1",
      "number": 200
    },
    "metadata": null
  }
]
Example (GetEventsByStreamNdJson)
// Given
shortuuid.SetRand(100)
inMemoryStore := inmemorystore.New(
	inmemorystore.WithClock(sequentialclock.New()),
)
api := rangedbapi.New(rangedbapi.WithStore(inMemoryStore))

server := httptest.NewServer(api)
defer server.Close()

PrintError(
	inMemoryStore.Save(rangedbtest.ThingWasDone{ID: "605f20348fb940e386c171d51c877bf1", Number: 100}, nil),
	inMemoryStore.Save(rangedbtest.ThingWasDone{ID: "605f20348fb940e386c171d51c877bf1", Number: 200}, nil),
	inMemoryStore.Save(rangedbtest.AnotherWasComplete{ID: "a095086e52bc4617a1763a62398cd645"}, nil),
)
url := fmt.Sprintf("%s/events/thing/605f20348fb940e386c171d51c877bf1.ndjson", server.URL)

// When
response, err := http.Get(url)
PrintError(err)
defer Close(response.Body)

body, err := ioutil.ReadAll(response.Body)
PrintError(err)

fmt.Println(string(body))
Output:
{"aggregateType":"thing","aggregateID":"605f20348fb940e386c171d51c877bf1","globalSequenceNumber":0,"sequenceNumber":0,"insertTimestamp":0,"eventID":"d2ba8e70072943388203c438d4e94bf3","eventType":"ThingWasDone","data":{"id":"605f20348fb940e386c171d51c877bf1","number":100},"metadata":null}
{"aggregateType":"thing","aggregateID":"605f20348fb940e386c171d51c877bf1","globalSequenceNumber":1,"sequenceNumber":1,"insertTimestamp":1,"eventID":"99cbd88bbcaf482ba1cc96ed12541707","eventType":"ThingWasDone","data":{"id":"605f20348fb940e386c171d51c877bf1","number":200},"metadata":null}
Example (SaveEvent)
// Given
inMemoryStore := inmemorystore.New(
	inmemorystore.WithClock(sequentialclock.New()),
)
api := rangedbapi.New(rangedbapi.WithStore(inMemoryStore))

server := httptest.NewServer(api)
defer server.Close()

const requestBody = `[
		{
			"eventID": "2b1bb91150db464a8723cae30def7996",
			"eventType": "ThingWasDone",
			"data":{
				"id": "141b39d2b9854f8093ef79dc47dae6af",
				"number": 100
			},
			"metadata":null
		},
		{
			"eventID": "c8df652d85f2419e83ad6ef3afa49b08",
			"eventType": "ThingWasDone",
			"data":{
				"id": "141b39d2b9854f8093ef79dc47dae6af",
				"number": 200
			},
			"metadata":null
		}
	]`
url := fmt.Sprintf("%s/save-events/thing/141b39d2b9854f8093ef79dc47dae6af", server.URL)

// When
response, err := http.Post(url, "application/json", strings.NewReader(requestBody))
PrintError(err)
defer Close(response.Body)

body, err := ioutil.ReadAll(response.Body)
PrintError(err)
fmt.Println(string(body))
Output:
{"status":"OK"}

Index

Examples

Constants

This section is empty.

Variables

This section is empty.

Functions

func New

func New(options ...Option) *api

New constructs an api.

Types

type InvalidInput

type InvalidInput struct {
	// contains filtered or unexported fields
}

InvalidInput defines an error wrapper for invalid client input.

func NewInvalidInput

func NewInvalidInput(err error) *InvalidInput

NewInvalidInput constructs an InvalidInput wrapping an error.

func (InvalidInput) Error

func (i InvalidInput) Error() string

type Option

type Option func(*api)

Option defines functional option parameters for api.

func WithBaseUri

func WithBaseUri(baseUri string) Option

WithBaseUri is a functional option to inject the base URI for use in API links.

func WithStore

func WithStore(store rangedb.Store) Option

WithStore is a functional option to inject a Store.

Jump to

Keyboard shortcuts

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