| Safe Haskell | Safe-Inferred |
|---|---|
| Language | Haskell2010 |
Data.Appendful.Persistent
Synopsis
- clientMakeSyncRequestQuery :: forall sid clientRecord a m. (PersistEntity clientRecord, PersistField sid, PersistEntityBackend clientRecord ~ SqlBackend, MonadIO m) => (clientRecord -> a) -> EntityField clientRecord (Maybe sid) -> SqlPersistT m (SyncRequest (Key clientRecord) sid a)
- clientMergeSyncResponseQuery :: (PersistEntity clientRecord, PersistField sid, PersistEntityBackend clientRecord ~ SqlBackend, SafeToInsert clientRecord, MonadIO m) => (sid -> a -> clientRecord) -> EntityField clientRecord (Maybe sid) -> SyncResponse (Key clientRecord) sid a -> SqlPersistT m ()
- clientSyncProcessor :: (PersistEntity clientRecord, PersistField sid, PersistEntityBackend clientRecord ~ SqlBackend, SafeToInsert clientRecord, MonadIO m) => (sid -> a -> clientRecord) -> EntityField clientRecord (Maybe sid) -> ClientSyncProcessor (Key clientRecord) sid a (SqlPersistT m)
- serverProcessSyncQuery :: (PersistEntity record, PersistEntityBackend record ~ SqlBackend, SafeToInsert record, MonadIO m) => [Filter record] -> (record -> a) -> (a -> record) -> SyncRequest ci (Key record) a -> SqlPersistT m (SyncResponse ci (Key record) a)
- serverProcessSyncWithCustomIdQuery :: (Ord sid, PersistEntity record, PersistEntityBackend record ~ SqlBackend, SafeToInsert record, MonadIO m) => SqlPersistT m sid -> [Filter record] -> (record -> (sid, a)) -> (sid -> a -> record) -> SyncRequest ci sid a -> SqlPersistT m (SyncResponse ci sid a)
- serverSyncProcessor :: (PersistEntity record, PersistEntityBackend record ~ SqlBackend, SafeToInsert record, MonadIO m) => [Filter record] -> (record -> a) -> (a -> record) -> ServerSyncProcessor ci (Key record) a (SqlPersistT m)
- serverSyncProcessorWithCustomId :: (Ord sid, PersistEntity record, PersistEntityBackend record ~ SqlBackend, SafeToInsert record, MonadIO m) => SqlPersistT m sid -> [Filter record] -> (record -> (sid, a)) -> (sid -> a -> record) -> ServerSyncProcessor ci sid a (SqlPersistT m)
- setupUnsyncedClientQuery :: (PersistEntity clientRecord, PersistEntityBackend clientRecord ~ SqlBackend, SafeToInsert clientRecord, MonadIO m) => (a -> clientRecord) -> [a] -> SqlPersistT m ()
- setupClientQuery :: (PersistEntity clientRecord, PersistEntityBackend clientRecord ~ SqlBackend, SafeToInsert clientRecord, MonadIO m) => (a -> clientRecord) -> (sid -> a -> clientRecord) -> ClientStore (Key clientRecord) sid a -> SqlPersistT m ()
- clientGetStoreQuery :: (Ord sid, PersistEntity clientRecord, PersistField sid, PersistEntityBackend clientRecord ~ SqlBackend, MonadIO m) => (clientRecord -> a) -> EntityField clientRecord (Maybe sid) -> SqlPersistT m (ClientStore (Key clientRecord) sid a)
- serverGetStoreQuery :: (PersistEntity record, PersistEntityBackend record ~ SqlBackend, MonadIO m) => (record -> a) -> SqlPersistT m (ServerStore (Key record) a)
- setupServerQuery :: (PersistEntity record, PersistEntityBackend record ~ SqlBackend, MonadIO m) => (a -> record) -> ServerStore (Key record) a -> SqlPersistT m ()
Client side
clientMakeSyncRequestQuery Source #
Arguments
| :: forall sid clientRecord a m. (PersistEntity clientRecord, PersistField sid, PersistEntityBackend clientRecord ~ SqlBackend, MonadIO m) | |
| => (clientRecord -> a) | How to read a record |
| -> EntityField clientRecord (Maybe sid) | The server id field |
| -> SqlPersistT m (SyncRequest (Key clientRecord) sid a) |
Make a sync request on the client side
clientMergeSyncResponseQuery Source #
Arguments
| :: (PersistEntity clientRecord, PersistField sid, PersistEntityBackend clientRecord ~ SqlBackend, SafeToInsert clientRecord, MonadIO m) | |
| => (sid -> a -> clientRecord) | Create an un-deleted synced record on the client side |
| -> EntityField clientRecord (Maybe sid) | The server id field |
| -> SyncResponse (Key clientRecord) sid a | |
| -> SqlPersistT m () |
Merge a sync response on the client side
Raw processors
Arguments
| :: (PersistEntity clientRecord, PersistField sid, PersistEntityBackend clientRecord ~ SqlBackend, SafeToInsert clientRecord, MonadIO m) | |
| => (sid -> a -> clientRecord) | Create an un-deleted synced record on the client side |
| -> EntityField clientRecord (Maybe sid) | The server id field |
| -> ClientSyncProcessor (Key clientRecord) sid a (SqlPersistT m) |
Server side
serverProcessSyncQuery Source #
Arguments
| :: (PersistEntity record, PersistEntityBackend record ~ SqlBackend, SafeToInsert record, MonadIO m) | |
| => [Filter record] | Filters to select the relevant items Use these if you have multiple users and you want to sync per-user |
| -> (record -> a) | How to read a record |
| -> (a -> record) | How to insert a _new_ record |
| -> SyncRequest ci (Key record) a | |
| -> SqlPersistT m (SyncResponse ci (Key record) a) |
Process a sync query on the server side.
serverProcessSyncWithCustomIdQuery Source #
Arguments
| :: (Ord sid, PersistEntity record, PersistEntityBackend record ~ SqlBackend, SafeToInsert record, MonadIO m) | |
| => SqlPersistT m sid | The action to generate new identifiers |
| -> [Filter record] | Filters to select the relevant items Use these if you have multiple users and you want to sync per-user |
| -> (record -> (sid, a)) | How to read a record |
| -> (sid -> a -> record) | How to insert a _new_ record |
| -> SyncRequest ci sid a | |
| -> SqlPersistT m (SyncResponse ci sid a) |
Process a sync query on the server side with a custom id.
Sync processors
Arguments
| :: (PersistEntity record, PersistEntityBackend record ~ SqlBackend, SafeToInsert record, MonadIO m) | |
| => [Filter record] | Filters to select the relevant items Use these if you have multiple users and you want to sync per-user |
| -> (record -> a) | How to read a record |
| -> (a -> record) | How to insert a _new_ record |
| -> ServerSyncProcessor ci (Key record) a (SqlPersistT m) |
A server sync processor that uses the sqlkey of the record as the name
serverSyncProcessorWithCustomId Source #
Arguments
| :: (Ord sid, PersistEntity record, PersistEntityBackend record ~ SqlBackend, SafeToInsert record, MonadIO m) | |
| => SqlPersistT m sid | The action to generate new identifiers |
| -> [Filter record] | Filters to select the relevant items Use these if you have multiple users and you want to sync per-user |
| -> (record -> (sid, a)) | How to read a record |
| -> (sid -> a -> record) | How to insert a _new_ record |
| -> ServerSyncProcessor ci sid a (SqlPersistT m) |
A server sync processor that uses a custom key as the name
Utils
Client side
setupUnsyncedClientQuery Source #
Arguments
| :: (PersistEntity clientRecord, PersistEntityBackend clientRecord ~ SqlBackend, SafeToInsert clientRecord, MonadIO m) | |
| => (a -> clientRecord) | How to insert a _new_ record |
| -> [a] | |
| -> SqlPersistT m () |
Setup an unsynced client store
You shouldn't need this.
Arguments
| :: (PersistEntity clientRecord, PersistEntityBackend clientRecord ~ SqlBackend, SafeToInsert clientRecord, MonadIO m) | |
| => (a -> clientRecord) | Create an un-deleted unsynced record on the client side |
| -> (sid -> a -> clientRecord) | Create an un-deleted synced record on the client side |
| -> ClientStore (Key clientRecord) sid a | |
| -> SqlPersistT m () |
Setup a client store
You shouldn't need this.
Arguments
| :: (Ord sid, PersistEntity clientRecord, PersistField sid, PersistEntityBackend clientRecord ~ SqlBackend, MonadIO m) | |
| => (clientRecord -> a) | How to red a record |
| -> EntityField clientRecord (Maybe sid) | The server id field |
| -> SqlPersistT m (ClientStore (Key clientRecord) sid a) |
Get a client store
You shouldn't need this.
Server side side
Arguments
| :: (PersistEntity record, PersistEntityBackend record ~ SqlBackend, MonadIO m) | |
| => (record -> a) | How to read a record |
| -> SqlPersistT m (ServerStore (Key record) a) |
Get the server store from the database
You shouldn't need this.
Arguments
| :: (PersistEntity record, PersistEntityBackend record ~ SqlBackend, MonadIO m) | |
| => (a -> record) | How to write a record |
| -> ServerStore (Key record) a | |
| -> SqlPersistT m () |
Set up a server store in the database.
You shouldn't need this.
This uses insertKey function and is therefore unsafe.