mirror of
https://github.com/Ratstail91/sineQL.git
synced 2025-11-29 02:34:28 +11:00
Moved notes.md to README.md
This commit is contained in:
102
README.md
Normal file
102
README.md
Normal file
@@ -0,0 +1,102 @@
|
||||
simpleQL is a web API query language that mimics graphQL, designed solely for fun.
|
||||
|
||||
simpleQL consists of two languages - the schema language, and the query language.
|
||||
|
||||
## The Schema Language
|
||||
|
||||
The schema language is a layout of how queries should be made, as well as what can be made with them. There are two built-in keywords for the schema language:
|
||||
|
||||
* type
|
||||
* scalar
|
||||
|
||||
`type` is used for defining new compound types. `scalar` is for defining new scalar types, such as `Date`.
|
||||
|
||||
The built-in types for the schema language are:
|
||||
|
||||
* String
|
||||
* Integer
|
||||
* Float
|
||||
* Boolean
|
||||
|
||||
These can be combined into compound types as so:
|
||||
|
||||
```
|
||||
scalar Date
|
||||
|
||||
type Book {
|
||||
String title
|
||||
Author author
|
||||
Date published
|
||||
}
|
||||
|
||||
type Author {
|
||||
!String name
|
||||
!Book[] books
|
||||
}
|
||||
```
|
||||
|
||||
`[]` Represents an array of fields, while `!` represents a field that must not be omitted in queries (non-nullable).
|
||||
|
||||
## The Query Language
|
||||
|
||||
The query langauge can be used to request data from a server, either in whole or in part by listing it's type and it's fields, and subfields.
|
||||
|
||||
```
|
||||
Book {
|
||||
title
|
||||
author {
|
||||
name
|
||||
books {
|
||||
title
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
The fields can be altered as well, using the query language's built-in keywords:
|
||||
|
||||
* create
|
||||
* update
|
||||
* delete
|
||||
* match
|
||||
* set
|
||||
|
||||
`create`, `update` and `delete` do as you would expect them to.
|
||||
|
||||
When using `create`, `match` will find an existing record for a compound type and use that as it's value (multiple matches is an error):
|
||||
|
||||
```
|
||||
create Book {
|
||||
set title "The Wind in the Willows"
|
||||
match author {
|
||||
name "Kenneth Grahame"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
When using `update`, `match` will find all existing records and update those using the `set` keyword:
|
||||
|
||||
```
|
||||
update Book {
|
||||
match title "The Wind in the Willows"
|
||||
set published "15 June 1908"
|
||||
}
|
||||
```
|
||||
|
||||
```
|
||||
update Book {
|
||||
match title "The Wind in the Willows"
|
||||
set title "The Fart in the Fronds"
|
||||
}
|
||||
```
|
||||
|
||||
When using `delete`, only `match` is valid, and will delete all matching records:
|
||||
|
||||
```
|
||||
delete Book {
|
||||
match title "The Fart in the Fronds"
|
||||
}
|
||||
```
|
||||
|
||||
You can use as many instances of `match` and `set` as you like, as long as the result is valid.
|
||||
|
||||
@@ -1,49 +0,0 @@
|
||||
simpleQL is a web API query language that mimics graphQL, designed solely for fun.
|
||||
|
||||
simpleQL consists of two languages - the schema language, and the query language. The schema language is a layout of how queries should be made, as well as what can be made with them.
|
||||
|
||||
There are two built-in keywords for the schema language:
|
||||
|
||||
* type
|
||||
* scalar
|
||||
|
||||
`type` is used for defining new compound types. `scalar` is for defining new scalar types, such as `Date`.
|
||||
|
||||
The built-in types for the schema language are:
|
||||
|
||||
* String
|
||||
* Integer
|
||||
* Float
|
||||
* Boolean
|
||||
|
||||
These can be combined into compound types as so:
|
||||
|
||||
```
|
||||
scalar Date
|
||||
|
||||
type Book {
|
||||
String title
|
||||
Author author
|
||||
Date published
|
||||
}
|
||||
|
||||
type Author {
|
||||
!String name
|
||||
!Book[] books
|
||||
}
|
||||
```
|
||||
|
||||
The query langauge can be used to request data from a server, either in whole or in part by listing it's type and it's fields, and subfields.
|
||||
|
||||
```
|
||||
Book {
|
||||
title
|
||||
author {
|
||||
name
|
||||
books {
|
||||
title
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user