# 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)