IzumiSy/elm-firestore/11.0.1

NOTE: the latest version is 13.0.0

Firestore.Codec

Codec for Firestore

type alias User =
    { name : String
    , age : Int
    }


codec : Codec.Codec User
codec =
    Codec.document User
        |> Codec.required "name" .name Codec.string
        |> Codec.required "age" .age Codec.int
        |> Codec.build


getDocument : Firestore.Firestore -> Cmd Msg
getDocument firestore =
    firestore
        |> Firestore.path "users/user0"
        |> Firestore.get (Codec.asDecoder codec)
        |> Task.attempt GotDocument


insertDocument : Firestore.Firestore -> Cmd Msg
insertDocument firestore =
    firestore
        |> Firestore.path "users"
        |> Firestore.insert
            (Codec.asDecoder codec)
            (Codec.asEncoder codec { name = "thomas", age = 26 })
        |> Task.attempt InsertedDocument

Definitions

type Codec a
asEncoder : Codec a -> a -> Encoder
encode : Codec a -> a -> Value
decode : Codec a -> Decoder a

Constructors

type Document a cons
document : cons -> Document a cons
build : Document a a -> Codec a
required : String -> (a -> b) -> Field b -> Document a (b -> cons) -> Document a cons
String
-> (a -> b)
-> Field b
-> b
-> Document a (b -> cons)
-> Document a cons

Field

type Field a
bool : Field Bool
bytes : Field String
int : Field Int
string : Field String
list : Field a -> Field (List a)
dict : Field a -> Field (Dict String a)
null : Field ()
maybe : Field a -> Field (Maybe a)

Advanced

map : (a -> b) -> (b -> a) -> Field a -> Field b
andThen : (a -> Field b) -> (b -> a) -> Field a -> Field b
succeed : a -> Field a
fail : String -> Field a
construct : Decoder a -> (a -> Encoder) -> Codec a