packages feed

eventium-sqlite-0.2.1: README.md

# Eventium SQLite

SQLite event store backend for Eventium.

## Overview

`eventium-sqlite` provides a lightweight, file-based event store using SQLite.
Ideal for CLI tools, single-process applications, and development environments
where a full database server is unnecessary.

## API

```haskell
sqliteEventStoreWriter
  :: (MonadIO m)
  => SqlEventStoreConfig entity serialized
  -> VersionedEventStoreWriter (SqlPersistT m) serialized

initializeSqliteEventStore
  :: (MonadIO m)
  => SqlEventStoreConfig entity serialized
  -> ConnectionPool
  -> m ()
```

Readers come from `eventium-sql-common` (re-exported):

```haskell
sqlEventStoreReader       :: SqlEventStoreConfig entity serialized -> VersionedEventStoreReader (SqlPersistT m) serialized
sqlGlobalEventStoreReader :: SqlEventStoreConfig entity serialized -> GlobalEventStoreReader (SqlPersistT m) serialized
```

## Usage

```haskell
import Eventium.Store.Sqlite
import Database.Persist.Sqlite

main :: IO ()
main = runNoLoggingT $ do
  pool <- createSqlitePool "events.db" 1
  liftIO $ initializeSqliteEventStore defaultSqlEventStoreConfig pool

  let writer = sqliteEventStoreWriter defaultSqlEventStoreConfig
      reader = sqlEventStoreReader defaultSqlEventStoreConfig
  -- writer and reader operate in SqlPersistT m
```

`initializeSqliteEventStore` runs migrations and creates a UUID index.

## When to Use

| Scenario | Recommendation |
|----------|----------------|
| CLI tools, desktop apps | SQLite |
| Development / prototyping | SQLite or Memory |
| Multi-process / production | PostgreSQL |
| Unit tests (no persistence needed) | Memory |

## Installation

```yaml
dependencies:
  - eventium-core
  - eventium-sqlite
  - persistent-sqlite
```

## Documentation

- [Main README](../README.md)
- [SQL Common](../eventium-sql-common/)
- [Design](../DESIGN.md)
- [Cafe Example](../examples/cafe/) and [Bank Example](../examples/bank/) both use SQLite

## License

MIT -- see [LICENSE.md](LICENSE.md)