airgql-0.7.1.2: Automatically generate a GraphQL API for an SQLite database
Safe HaskellSafe-Inferred
LanguageHaskell2010

AirGQL.Lib

Synopsis

Documentation

data AccessMode Source #

Instances

Instances details
Show AccessMode Source # 
Instance details

Defined in AirGQL.Lib

Eq AccessMode Source # 
Instance details

Defined in AirGQL.Lib

data ColumnEntry Source #

Enhanced with generated information from SQL query "CREATE TABLE"

Constructors

ColumnEntry 

Fields

Instances

Instances details
ToJSON ColumnEntry Source # 
Instance details

Defined in AirGQL.Lib

Generic ColumnEntry Source # 
Instance details

Defined in AirGQL.Lib

Associated Types

type Rep ColumnEntry :: Type -> Type #

Show ColumnEntry Source # 
Instance details

Defined in AirGQL.Lib

Eq ColumnEntry Source # 
Instance details

Defined in AirGQL.Lib

type Rep ColumnEntry Source # 
Instance details

Defined in AirGQL.Lib

data GqlTypeName Source #

Constructors

GqlTypeName 

Fields

Instances

Instances details
ToJSON GqlTypeName Source # 
Instance details

Defined in AirGQL.Lib

Generic GqlTypeName Source # 
Instance details

Defined in AirGQL.Lib

Associated Types

type Rep GqlTypeName :: Type -> Type #

Show GqlTypeName Source # 
Instance details

Defined in AirGQL.Lib

Eq GqlTypeName Source # 
Instance details

Defined in AirGQL.Lib

type Rep GqlTypeName Source # 
Instance details

Defined in AirGQL.Lib

type Rep GqlTypeName = D1 ('MetaData "GqlTypeName" "AirGQL.Lib" "airgql-0.7.1.2-LHfNMzVCPB9CgrB5L7WeEw" 'False) (C1 ('MetaCons "GqlTypeName" 'PrefixI 'True) (S1 ('MetaSel ('Just "root") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text) :*: S1 ('MetaSel ('Just "full") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text)))

data ObjectType Source #

Constructors

Table 
Index 
View 
Trigger 

Instances

Instances details
FromJSON ObjectType Source # 
Instance details

Defined in AirGQL.Lib

ToJSON ObjectType Source # 
Instance details

Defined in AirGQL.Lib

Generic ObjectType Source # 
Instance details

Defined in AirGQL.Lib

Associated Types

type Rep ObjectType :: Type -> Type #

Show ObjectType Source # 
Instance details

Defined in AirGQL.Lib

Eq ObjectType Source # 
Instance details

Defined in AirGQL.Lib

FromField ObjectType Source # 
Instance details

Defined in AirGQL.Lib

type Rep ObjectType Source # 
Instance details

Defined in AirGQL.Lib

type Rep ObjectType = D1 ('MetaData "ObjectType" "AirGQL.Lib" "airgql-0.7.1.2-LHfNMzVCPB9CgrB5L7WeEw" 'False) ((C1 ('MetaCons "Table" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Index" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "View" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Trigger" 'PrefixI 'False) (U1 :: Type -> Type)))

replaceCaseInsensitive :: Text -> Text -> Text -> Text Source #

Case-insensitively replaces all occurrences of a substring within a string with a replacement string.

Examples:

>>> replaceCaseInsensitive "hello" "hi" "Hello World"
"hi World"
>>> replaceCaseInsensitive "l" "L" "Hello World"
"HeLLo WorLd"

sqlDataToAesonValue :: Text -> SQLData -> Value Source #

WARNING: Also change duplicate sqlDataToGQLValue

newtype SQLPost Source #

Constructors

SQLPost 

Fields

Instances

Instances details
FromJSON SQLPost Source # 
Instance details

Defined in AirGQL.Lib

ToJSON SQLPost Source # 
Instance details

Defined in AirGQL.Lib

Generic SQLPost Source # 
Instance details

Defined in AirGQL.Lib

Associated Types

type Rep SQLPost :: Type -> Type #

Methods

from :: SQLPost -> Rep SQLPost x #

to :: Rep SQLPost x -> SQLPost #

Show SQLPost Source # 
Instance details

Defined in AirGQL.Lib

Eq SQLPost Source # 
Instance details

Defined in AirGQL.Lib

Methods

(==) :: SQLPost -> SQLPost -> Bool #

(/=) :: SQLPost -> SQLPost -> Bool #

ToSample SQLPost Source # 
Instance details

Defined in AirGQL.Lib

Methods

toSamples :: Proxy SQLPost -> [(Text, SQLPost)] #

type Rep SQLPost Source # 
Instance details

Defined in AirGQL.Lib

type Rep SQLPost = D1 ('MetaData "SQLPost" "AirGQL.Lib" "airgql-0.7.1.2-LHfNMzVCPB9CgrB5L7WeEw" 'True) (C1 ('MetaCons "SQLPost" 'PrefixI 'True) (S1 ('MetaSel ('Just "query") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text)))

sqlTypeNameToGQLTypeName :: Text -> Maybe Text -> Maybe GqlTypeName Source #

Computes storage class through type affinity as described in https://www.sqlite.org/datatype3.html#affname with an extension for boolean (Order is important) TODO: Add Support for GraphQL's type ID

data TableEntryRaw Source #

Constructors

TableEntryRaw 

Instances

Instances details
ToJSON TableEntryRaw Source # 
Instance details

Defined in AirGQL.Lib

Generic TableEntryRaw Source # 
Instance details

Defined in AirGQL.Lib

Associated Types

type Rep TableEntryRaw :: Type -> Type #

Show TableEntryRaw Source # 
Instance details

Defined in AirGQL.Lib

Eq TableEntryRaw Source # 
Instance details

Defined in AirGQL.Lib

FromRow TableEntryRaw Source # 
Instance details

Defined in AirGQL.Lib

type Rep TableEntryRaw Source # 
Instance details

Defined in AirGQL.Lib

data TableEntry Source #

Instances

Instances details
Generic TableEntry Source # 
Instance details

Defined in AirGQL.Lib

Associated Types

type Rep TableEntry :: Type -> Type #

Show TableEntry Source # 
Instance details

Defined in AirGQL.Lib

Eq TableEntry Source # 
Instance details

Defined in AirGQL.Lib

type Rep TableEntry Source # 
Instance details

Defined in AirGQL.Lib

data UniqueConstraint Source #

Constructors

UniqueConstraint 

Fields

Instances

Instances details
ToJSON UniqueConstraint Source # 
Instance details

Defined in AirGQL.Lib

Generic UniqueConstraint Source # 
Instance details

Defined in AirGQL.Lib

Associated Types

type Rep UniqueConstraint :: Type -> Type #

Show UniqueConstraint Source # 
Instance details

Defined in AirGQL.Lib

Eq UniqueConstraint Source # 
Instance details

Defined in AirGQL.Lib

type Rep UniqueConstraint Source # 
Instance details

Defined in AirGQL.Lib

type Rep UniqueConstraint = D1 ('MetaData "UniqueConstraint" "AirGQL.Lib" "airgql-0.7.1.2-LHfNMzVCPB9CgrB5L7WeEw" 'False) (C1 ('MetaCons "UniqueConstraint" 'PrefixI 'True) (S1 ('MetaSel ('Just "name") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Text)) :*: S1 ('MetaSel ('Just "columns") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Text])))

data ReferencesConstraint Source #

Instances

Instances details
ToJSON ReferencesConstraint Source # 
Instance details

Defined in AirGQL.Lib

Generic ReferencesConstraint Source # 
Instance details

Defined in AirGQL.Lib

Associated Types

type Rep ReferencesConstraint :: Type -> Type #

Show ReferencesConstraint Source # 
Instance details

Defined in AirGQL.Lib

Eq ReferencesConstraint Source # 
Instance details

Defined in AirGQL.Lib

type Rep ReferencesConstraint Source # 
Instance details

Defined in AirGQL.Lib

type Rep ReferencesConstraint = D1 ('MetaData "ReferencesConstraint" "AirGQL.Lib" "airgql-0.7.1.2-LHfNMzVCPB9CgrB5L7WeEw" 'False) (C1 ('MetaCons "ReferencesConstraint" 'PrefixI 'True) (S1 ('MetaSel ('Just "name") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Text)) :*: (S1 ('MetaSel ('Just "table") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text) :*: S1 ('MetaSel ('Just "columns") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ReferencesConstraintColumns))))

data ReferencesConstraintColumns Source #

Constructors

ImplicitColumns Text

The "to" column is implicit. Eg: `a TEXT REFERENCES other_table`

ExplicitColumns [(Text, Text)]

Explicit (from, to) pairs

Instances

Instances details
ToJSON ReferencesConstraintColumns Source # 
Instance details

Defined in AirGQL.Lib

Generic ReferencesConstraintColumns Source # 
Instance details

Defined in AirGQL.Lib

Associated Types

type Rep ReferencesConstraintColumns :: Type -> Type #

Show ReferencesConstraintColumns Source # 
Instance details

Defined in AirGQL.Lib

Eq ReferencesConstraintColumns Source # 
Instance details

Defined in AirGQL.Lib

type Rep ReferencesConstraintColumns Source # 
Instance details

Defined in AirGQL.Lib

type Rep ReferencesConstraintColumns = D1 ('MetaData "ReferencesConstraintColumns" "AirGQL.Lib" "airgql-0.7.1.2-LHfNMzVCPB9CgrB5L7WeEw" 'False) (C1 ('MetaCons "ImplicitColumns" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text)) :+: C1 ('MetaCons "ExplicitColumns" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [(Text, Text)])))

data CheckConstraint Source #

Constructors

CheckConstraint 

Fields

Instances

Instances details
ToJSON CheckConstraint Source # 
Instance details

Defined in AirGQL.Lib

Generic CheckConstraint Source # 
Instance details

Defined in AirGQL.Lib

Associated Types

type Rep CheckConstraint :: Type -> Type #

Show CheckConstraint Source # 
Instance details

Defined in AirGQL.Lib

Eq CheckConstraint Source # 
Instance details

Defined in AirGQL.Lib

type Rep CheckConstraint Source # 
Instance details

Defined in AirGQL.Lib

type Rep CheckConstraint = D1 ('MetaData "CheckConstraint" "AirGQL.Lib" "airgql-0.7.1.2-LHfNMzVCPB9CgrB5L7WeEw" 'False) (C1 ('MetaCons "CheckConstraint" 'PrefixI 'True) (S1 ('MetaSel ('Just "name") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Text)) :*: (S1 ('MetaSel ('Just "predicate") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text) :*: S1 ('MetaSel ('Just "columns") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe [Text])))))

sqlite :: Dialect Source #

SQLite dialect

lintTableCreationCode :: Maybe Connection -> Statement -> IO [Text] Source #

Lint the sql code for creating a table

An optional connection can be used to retrieve the existing db data, which is used for things like resolving implicit references constraints (where the primary key is not explicitly given)

resolveReferencesConstraint :: [TableEntry] -> Text -> Maybe Text Source #

SQLite allows references constraints to not specify the exact column they are referencing. This functions tries to recover that information by looking for primary keys among the columns of the referenced table. Note: we currently do not support having composite primary keys referenced implicitly, as that would lead to multiple complications like: - figuring out the correct order for the references - having to perform the "enrichTableEntry" computation in two separate passes