{-# LANGUAGE GADTs, KindSignatures, TypeOperators #-} -- | This library allows one to create mutable (but thread-safe) -- lists of values and access them quickly -- with certain automatically updated indices (foreign keys). module Data.HMemDb ( MS, GS, SP, -- * Tables Table, TableVar, TableVarS, forTV, deleteTV, modifyTV, readTV, ForeignKey, keyTarget, -- * Specs FullSpec(FullSpec, keySpec, tabSpec), -- ** Table specs TableSpec(TableSpec), ColSpec, val, key, -- ** Key specs KeySpec, unique, nonunique, -- * Creating tables createTable, Keys(Keys), RefContainer, IsKeySpec, (:+:)((:+:)), CreateTable, -- * Basic operations insert, select, delete, update, -- * Serialization getTable, putTable, ) where import Data.HMemDb.Binary (GS, MS, SP) import Data.HMemDb.CreateTable (CreateTable, IsKeySpec, createTable) import Data.HMemDb.ForeignKeys (ForeignKey, delete, keyTarget, select, update) import Data.HMemDb.Persistence (getTable, putTable) import Data.HMemDb.RefContainer (RefContainer) import Data.HMemDb.Specs (ColSpec, FullSpec(FullSpec, keySpec, tabSpec), Keys(Keys), KeySpec, TableSpec(TableSpec), key, nonunique, val, unique, (:+:)((:+:))) import Data.HMemDb.Tables (Table) import Data.HMemDb.TableVars (TableVar, TableVarS, deleteTV, forTV, insert, modifyTV, readTV)