> For the complete documentation index, see [llms.txt](https://www.serverless-cqrs.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://www.serverless-cqrs.com/advanced/repository/write-model.md).

# Write Model

## Types

### event

An event can have an arbitrary data structure, as long as the reducer understand how to parse it.

### commit

Commits contain one or more events. Adapters must return commits in the following format:

| attribute  | type      | description                                   |
| ---------- | --------- | --------------------------------------------- |
| `id`       | `string`  | ID of the entity                              |
| `version`  | `integer` | Version number of the commit                  |
| `entity`   | `string`  | Entity name                                   |
| `commitId` | `string`  | Unique ID for this commit                     |
| `events`   | `array`   | Array of event objects included in the commit |

## Methods

### listCommits

`listCommits(commitId='0')`&#x20;

Loads all commits for all entities, (optionally) starting from a specific `commitId`

#### Parameters

| attribute  | type     | description                                          |
| ---------- | -------- | ---------------------------------------------------- |
| `commitId` | `string` | A commit ID to start from (inclusive). Default `'0'` |

#### Returns

`[ commits ]` - an array of commit objects.

### loadEvents

`loadEvents(id, version=0)`

Loads all events for a given entity, (optionally) starting from a commit `version`.

#### Parameters

| attribute | type      | description                                                        |
| --------- | --------- | ------------------------------------------------------------------ |
| `id`      | `string`  | (required) the ID of the entity                                    |
| `version` | `integer` | a commit version number to start from (inclusive). Defaults to `0` |

#### Returns

`[ events ]` -  a flat array of event objects.

### append

`append(id, version, events)`&#x20;

Creates a new commit and persists it to the database. Must throw if a commit with the same `id` + `version` already exists.

#### Parameters

| attribute | type      | description                            |
| --------- | --------- | -------------------------------------- |
| `id`      | `string`  | (required) the ID of the entity        |
| `version` | `integer` | (required) the commit version number   |
| `events`  | `array`   | (required) an array of `event` objects |

#### Returns

`null`&#x20;
