2.2.111-snapshot.1 • Published 11 months ago

event-store-adapter-js v2.2.111-snapshot.1

Weekly downloads
-
License
MIT
Repository
github
Last release
11 months ago

event-store-adapter-js

CI npm version Renovate License License npm.io

This library is designed to turn DynamoDB into an Event Store for CQRS/Event Sourcing.

日本語

Installation

$ npm install event-store-adapter-js

Usage

You can easily implement an Event Sourcing-enabled repository using EventStore.

class UserAccountRepository {
    constructor(
        private readonly eventStore: EventStore<
            UserAccountId,
            UserAccount,
            UserAccountEvent
        >,
    ) {}

    async storeEvent(event: UserAccountEvent, version: number) {
        await this.eventStore.persistEvent(event, version);
    }

    async storeEventAndSnapshot(event: UserAccountEvent, snapshot: UserAccount) {
        await this.eventStore.persistEventAndSnapshot(event, snapshot);
    }

    async findById(id: UserAccountId): Promise<UserAccount | undefined> {
        const snapshot = await this.eventStore.getLatestSnapshotById(
            id,
            convertJSONToUserAccount,
        );
        if (snapshot === undefined) {
            return undefined;
        } else {
            const events = await this.eventStore.getEventsByIdSinceSequenceNumber(
                id,
                snapshot.sequenceNumber + 1,
                convertJSONtoUserAccountEvent,
            );
            return UserAccount.replay(events, snapshot);
        }
    }
}

The following is an example of the repository usage.

const eventStore = EventStoreFactory.ofDynamoDB<
    UserAccountId,
    UserAccount,
    UserAccountEvent
>(
    dynamodbClient,
    JOURNAL_TABLE_NAME,
    SNAPSHOT_TABLE_NAME,
    JOURNAL_AID_INDEX_NAME,
    SNAPSHOTS_AID_INDEX_NAME,
    32,
    convertJSONtoUserAccountEvent,
    convertJSONToUserAccount,
);
// if you want to use in-memory event store, use the following code.
// const eventStore = EventStoreFactory.ofMemory<UserAccountId, UserAccount, UserAccountEvent>();

const userAccountRepository = new UserAccountRepository(eventStore);

const id = new UserAccountId(ulid());
const name = "Alice";
const [userAccount1, created] = UserAccount.create(id, name);

await userAccountRepository.storeEventAndSnapshot(created, userAccount1);

const [userAccount2, renamed] = userAccount1.rename("Bob");

await userAccountRepository.storeEvent(renamed, userAccount2.version);

const userAccount3 = await userAccountRepository.findById(id);
if (userAccount3 === undefined) {
    throw new Error("userAccount3 is undefined");
}

expect(userAccount3.id).toEqual(id);
expect(userAccount3.name).toEqual("Bob");
expect(userAccount3.sequenceNumber).toEqual(2);
expect(userAccount3.version).toEqual(2);

Table Specifications

See docs/DATABASE_SCHEMA.md.

CQRS/Event Sourcing Example

See j5ik2o/cqrs-es-example-js.

License.

MIT License. See LICENSE for details.

Links

2.2.106-snapshot.2

11 months ago

2.2.108-snapshot.1

11 months ago

2.2.110-snapshot.1

11 months ago

2.2.110-snapshot.2

11 months ago

2.2.110

11 months ago

2.2.109

11 months ago

2.2.108

11 months ago

2.2.107

11 months ago

2.2.111-snapshot.1

11 months ago

2.2.106

11 months ago

2.2.107-snapshot.1

11 months ago

2.2.107-snapshot.2

11 months ago

2.2.109-snapshot.1

11 months ago

2.2.109-snapshot.2

11 months ago

2.2.106-snapshot.1

11 months ago

2.2.104-snapshot.3

11 months ago

2.2.104-snapshot.2

11 months ago

2.2.105

11 months ago

2.2.104

11 months ago

2.2.105-snapshot.2

11 months ago

2.2.105-snapshot.1

11 months ago

2.2.103-snapshot.1

11 months ago

2.2.103-snapshot.2

11 months ago

2.2.103-snapshot.3

11 months ago

2.2.101-snapshot.1

12 months ago

2.2.101-snapshot.2

11 months ago

2.2.104-snapshot.1

11 months ago

2.2.102-snapshot.2

11 months ago

2.2.102-snapshot.3

11 months ago

2.2.102-snapshot.1

11 months ago

2.2.102

11 months ago

2.2.101

11 months ago

2.2.100

12 months ago

2.2.103

11 months ago

2.2.99-snapshot.2

12 months ago

2.2.100-snapshot.2

12 months ago

2.2.100-snapshot.1

12 months ago

2.2.99

12 months ago

2.2.99-snapshot.1

12 months ago

2.2.97-snapshot.1

12 months ago

2.2.97-snapshot.2

12 months ago

2.2.98-snapshot.2

12 months ago

2.2.98-snapshot.1

12 months ago

2.2.97

12 months ago

2.2.98

12 months ago

2.2.96

12 months ago

2.2.96-snapshot.3

12 months ago

2.2.95-snapshot.2

12 months ago

2.2.95

12 months ago

2.2.96-snapshot.2

12 months ago

2.2.96-snapshot.1

12 months ago

2.2.95-snapshot.1

12 months ago

2.2.94

12 months ago

2.2.94-snapshot.1

12 months ago

2.2.94-snapshot.2

12 months ago

2.2.92-snapshot.1

12 months ago

2.2.92-snapshot.3

12 months ago

2.2.92-snapshot.2

12 months ago

2.2.93-snapshot.2

12 months ago

2.2.93-snapshot.1

12 months ago

2.2.93

12 months ago

2.2.91

12 months ago

2.2.92

12 months ago

2.2.90

1 year ago

2.2.88

1 year ago

2.2.89

1 year ago

2.2.86

1 year ago

2.2.87

1 year ago

2.2.84

1 year ago

2.2.85

1 year ago

2.2.83

1 year ago

2.2.79

1 year ago

2.2.78

1 year ago

2.2.82

1 year ago

2.2.80

1 year ago

2.2.81

1 year ago

2.2.77

1 year ago

2.2.75

1 year ago

2.2.76

1 year ago

2.2.74

1 year ago

2.2.73

1 year ago

2.2.71

1 year ago

2.2.72

1 year ago

2.2.70

1 year ago

2.2.68

1 year ago

2.2.69

1 year ago

2.2.66

1 year ago

2.2.67

1 year ago

2.2.64

1 year ago

2.2.65

1 year ago

2.2.62

1 year ago

2.2.63

1 year ago

2.2.60

1 year ago

2.2.61

1 year ago

2.2.59

1 year ago

2.2.57

1 year ago

2.2.58

1 year ago

2.2.55

1 year ago

2.2.56

1 year ago

2.2.54

1 year ago

2.2.53

1 year ago

2.2.51

1 year ago

2.2.52

1 year ago

2.2.50

1 year ago

2.2.48

1 year ago

2.2.49

1 year ago

2.2.46

1 year ago

2.2.47

1 year ago

2.2.44

1 year ago

2.2.45

1 year ago

2.2.43

1 year ago

2.2.42

1 year ago

2.2.41

1 year ago

2.2.39

1 year ago

2.2.40

1 year ago

2.2.38

1 year ago

2.2.37

1 year ago

2.2.36

1 year ago

2.2.35

1 year ago

2.2.33

1 year ago

2.2.34

1 year ago

2.2.32

1 year ago

2.2.31

1 year ago

2.2.30

1 year ago

2.2.1

1 year ago

2.2.0

1 year ago

2.2.3

1 year ago

2.2.2

1 year ago

2.2.5

1 year ago

2.2.4

1 year ago

2.2.7

1 year ago

2.2.6

1 year ago

2.2.9

1 year ago

2.2.8

1 year ago

2.2.17

1 year ago

2.2.18

1 year ago

2.2.15

1 year ago

2.2.16

1 year ago

2.2.13

1 year ago

2.2.14

1 year ago

2.2.11

1 year ago

2.2.12

1 year ago

2.2.10

1 year ago

2.2.19

1 year ago

2.2.28

1 year ago

2.2.29

1 year ago

2.2.26

1 year ago

2.2.27

1 year ago

2.2.24

1 year ago

2.2.25

1 year ago

2.2.22

1 year ago

2.2.23

1 year ago

2.2.20

1 year ago

2.2.21

1 year ago

2.1.32

2 years ago

2.1.31

2 years ago

2.1.30

2 years ago

2.1.29

2 years ago

2.1.28

2 years ago

2.1.27

2 years ago

2.1.26

2 years ago

2.1.25

2 years ago

2.1.24

2 years ago

2.1.23

2 years ago

2.1.22

2 years ago

2.1.21

2 years ago

2.1.19

2 years ago

2.1.20

2 years ago

2.1.18

2 years ago

2.1.16

2 years ago

2.1.17

2 years ago

2.1.15

2 years ago

2.1.14

2 years ago

2.1.13

2 years ago

2.1.12

2 years ago

2.1.11

2 years ago

2.1.10

2 years ago

2.1.9

2 years ago

2.1.9-snapshot.2

2 years ago

2.1.9-snapshot.1

2 years ago

2.1.9-snapshot.3

2 years ago

2.1.8

2 years ago

2.1.7

2 years ago

2.1.7-snapshot.4

2 years ago

2.1.8-snapshot.2

2 years ago

2.1.8-snapshot.1

2 years ago

2.1.7-snapshot.3

2 years ago

2.1.4

2 years ago

2.1.6

2 years ago

2.1.5

2 years ago

2.1.5-snapshot.7

2 years ago

2.1.5-snapshot.6

2 years ago

2.1.5-snapshot.5

2 years ago

2.1.5-snapshot.4

2 years ago

2.1.5-snapshot.3

2 years ago

2.1.5-snapshot.2

2 years ago

2.1.5-snapshot.1

2 years ago

2.1.7-snapshot.1

2 years ago

2.1.7-snapshot.2

2 years ago

2.1.4-snapshot.2

2 years ago

2.1.6-snapshot.2

2 years ago

2.1.6-snapshot.3

2 years ago

2.1.6-snapshot.1

2 years ago

2.1.3

2 years ago

2.1.4-snapshot.1

2 years ago

2.1.3-snapshot.3

2 years ago

2.1.2-snapshot.2

2 years ago

2.1.2-snapshot.3

2 years ago

2.1.2-snapshot.4

2 years ago

2.1.2-snapshot.1

2 years ago

2.1.2

2 years ago

2.1.1

2 years ago

2.1.3-snapshot.1

2 years ago

2.1.3-snapshot.2

2 years ago

2.1.1-snapshot.2

2 years ago

2.1.0

2 years ago

2.0.24

2 years ago

2.1.1-snapshot.1

2 years ago

2.0.22

2 years ago

2.0.23

2 years ago

2.0.20

2 years ago

2.0.21

2 years ago

2.0.19

2 years ago

2.0.17

2 years ago

2.0.18

2 years ago

2.0.15

2 years ago

2.0.16

2 years ago

2.0.14

2 years ago

2.0.13

2 years ago

2.0.12

2 years ago

2.0.11

2 years ago

2.0.10

2 years ago

2.0.9

2 years ago

2.0.9-snapshot.2

2 years ago

2.0.9-snapshot.1

2 years ago

2.0.7

2 years ago

2.0.8

2 years ago

2.0.8-snapshot.3

2 years ago

2.0.8-snapshot.1

2 years ago

2.0.8-snapshot.2

2 years ago

2.0.7-snapshot.4

2 years ago

2.0.7-snapshot.2

2 years ago

2.0.7-snapshot.3

2 years ago

2.0.7-snapshot.1

2 years ago

2.0.6-snapshot.2

2 years ago

2.0.6

2 years ago

2.0.5

2 years ago

2.0.6-snapshot.1

2 years ago

2.0.5-snapshot.1

2 years ago

2.0.5-snapshot.2

2 years ago

2.0.3-snapshot.2

2 years ago

2.0.3-snapshot.3

2 years ago

2.0.3-snapshot.4

2 years ago

2.0.4-snapshot.3

2 years ago

2.0.4-snapshot.2

2 years ago

2.0.4-snapshot.1

2 years ago

2.0.3

2 years ago

2.0.4

2 years ago

2.0.3-snapshot.1

2 years ago

2.0.2

2 years ago

2.0.2-snapshot.3

2 years ago

2.0.2-snapshot.1

2 years ago

2.0.2-snapshot.2

2 years ago

2.0.1

2 years ago

2.0.1-snapshot.4

2 years ago

2.0.1-snapshot.2

2 years ago

2.0.1-snapshot.3

2 years ago

1.1.96

2 years ago

1.1.98

2 years ago

1.1.97

2 years ago

2.0.0

2 years ago

2.0.1-snapshot.1

2 years ago

1.1.95

2 years ago

1.1.94

2 years ago

1.1.93

2 years ago

1.1.92

2 years ago

1.1.91

2 years ago

1.1.90

2 years ago

1.1.89

2 years ago

1.1.88

2 years ago

1.1.85

2 years ago

1.1.84

2 years ago

1.1.87

2 years ago

1.1.86

2 years ago

1.1.83

2 years ago

1.1.82

2 years ago

1.1.81

2 years ago

1.1.79

2 years ago

1.1.80

2 years ago

1.1.78

2 years ago

1.1.77

2 years ago

1.1.76

2 years ago

1.1.74

2 years ago

1.1.75

2 years ago

1.1.73

2 years ago

1.1.72

2 years ago

1.1.71

2 years ago

1.1.70

2 years ago

1.1.69

2 years ago

1.1.68

2 years ago

1.1.67

2 years ago

1.1.66

2 years ago

1.1.65

2 years ago

1.1.64

2 years ago

1.1.63

2 years ago

1.1.62

2 years ago

1.1.61

2 years ago

1.1.60

2 years ago

1.1.59

2 years ago

1.1.58

2 years ago

1.1.57

2 years ago

1.1.56

2 years ago

1.1.55

2 years ago

1.1.54

2 years ago

1.1.52

2 years ago

1.1.51

2 years ago

1.1.50

2 years ago

1.1.53

2 years ago

1.1.29

2 years ago

1.1.28

2 years ago

1.1.30

2 years ago

1.1.34

2 years ago

1.1.33

2 years ago

1.1.32

2 years ago

1.1.31

2 years ago

1.1.38

2 years ago

1.1.37

2 years ago

1.1.36

2 years ago

1.1.35

2 years ago

1.1.39

2 years ago

1.1.41

2 years ago

1.1.40

2 years ago

1.1.45

2 years ago

1.1.44

2 years ago

1.1.43

2 years ago

1.1.42

2 years ago

1.1.49

2 years ago

1.1.48

2 years ago

1.1.47

2 years ago

1.1.46

2 years ago

1.1.16

2 years ago

1.1.15

2 years ago

1.1.19

2 years ago

1.1.18

2 years ago

1.1.17

2 years ago

1.1.23

2 years ago

1.1.22

2 years ago

1.1.21

2 years ago

1.1.20

2 years ago

1.1.27

2 years ago

1.1.26

2 years ago

1.1.25

2 years ago

1.1.24

2 years ago

1.1.14

2 years ago

1.1.13

2 years ago

1.1.12

2 years ago

1.1.11

2 years ago

1.1.10

2 years ago

1.1.9

2 years ago

1.1.9-snapshot.2

2 years ago

1.1.9-snapshot.1

2 years ago

1.1.8

2 years ago

1.1.8-snapshot.2

2 years ago

1.1.8-snapshot.1

2 years ago

1.1.7

2 years ago

1.1.7-snapshot.2

2 years ago

1.1.7-snapshot.1

2 years ago

1.1.6

2 years ago

1.1.6-snapshot.3

2 years ago

1.1.6-snapshot.2

2 years ago

1.1.6-snapshot.1

2 years ago

1.1.5

2 years ago

1.1.5-snapshot.2

2 years ago

1.1.5-snapshot.1

2 years ago

1.1.4

2 years ago

1.1.4-snapshot.2

2 years ago

1.1.4-snapshot.1

2 years ago

1.1.3

2 years ago

1.1.3-snapshot.2

2 years ago

1.1.3-snapshot.1

2 years ago

1.1.2

2 years ago

1.1.2-snapshot.4

2 years ago

1.1.2-snapshot.3

2 years ago

1.1.2-snapshot.2

2 years ago

1.1.2-snapshot.1

2 years ago

1.1.1

2 years ago

1.1.1-snapshot.2

2 years ago

1.1.1-snapshot.1

2 years ago

1.1.0

2 years ago

1.0.9

2 years ago

1.0.9-snapshot.9

2 years ago

1.0.9-snapshot.8

2 years ago

1.0.9-snapshot.7

2 years ago

1.0.9-snapshot.6

2 years ago

1.0.9-snapshot.5

2 years ago

1.0.9-snapshot.4

2 years ago

1.0.9-snapshot.3

2 years ago

1.0.9-snapshot.2

2 years ago

1.0.9-snapshot.1

2 years ago

1.0.8

2 years ago

1.0.8-snapshot.3

2 years ago

1.0.8-snapshot.2

2 years ago

1.0.8-snapshot.1

2 years ago

1.0.7-snapshot.1

2 years ago

1.0.6-snapshot.2

2 years ago

1.0.6-snapshot.1

2 years ago

1.0.5-snapshot.9

2 years ago

1.0.5-snapshot.8

2 years ago

1.0.5-snapshot.7

2 years ago

1.0.5-snapshot.6

2 years ago

1.0.5-snapshot.5

2 years ago

1.0.5-snapshot.4

2 years ago

1.0.5-snapshot.3

2 years ago

1.0.5-snapshot.2

2 years ago

1.0.5-snapshot.1

2 years ago

1.0.4-snapshot.1

2 years ago

1.0.3-snapshot.1

2 years ago

1.0.2-snapshot.9

2 years ago

1.0.2-snapshot.8

2 years ago

1.0.2-snapshot.7

2 years ago

1.0.2-snapshot.6

2 years ago

1.0.2-snapshot.5

2 years ago

1.0.2-snapshot.4

2 years ago

1.0.2-snapshot.3

2 years ago

1.0.2-snapshot.2

2 years ago

1.0.2-snapshot.1

2 years ago

1.0.2-snapshot.0

2 years ago