diff --git a/Databases/SurrealDB/Functions.md b/Databases/SurrealDB/Functions.md index 40b3cdc..9cccdbb 100644 --- a/Databases/SurrealDB/Functions.md +++ b/Databases/SurrealDB/Functions.md @@ -1,3 +1,26 @@ # SurrealDB functions -- \ No newline at end of file +- Crypto +- Math +- String parsing +- Time +- Session +- Array + +## Crypto +WIP + +## Math +WIP + +## String/Parse +WIP + +## Time +WIP + +## Session +WIP + +## Array +WIP \ No newline at end of file diff --git a/Databases/SurrealDB/Syntax.md b/Databases/SurrealDB/Syntax.md index 88b2b83..1aee1e7 100644 --- a/Databases/SurrealDB/Syntax.md +++ b/Databases/SurrealDB/Syntax.md @@ -1,7 +1,7 @@ ## Syntax - [CREATE](https://docs.surrealdb.com/docs/surrealql/statements/select): Creates resources/records, similar to `INSERT INTO` in Postgres -- [DEFINE](https://docs.surrealdb.com/docs/surrealql/statements/define/overview): Creates namespaces, databases, and logins +- [DEFINE](https://docs.surrealdb.com/docs/surrealql/statements/define/overview): Creates namespaces, databases, and scopes, logins - [UPDATE](https://docs.surrealdb.com/docs/surrealql/statements/update): Updates resources/records, similar to `UPDATE table_name SET ...` in Postgres - [DELETE](https://docs.surrealdb.com/docs/surrealql/statements/delete): Deletes resources/records, similar to `DELETE` in Postgres - [USE](https://docs.surrealdb.com/docs/surrealql/statements/use/): Used for switching in between namespaces and databases @@ -118,3 +118,14 @@ UPDATE person:tobie SET name = 'Tobie', company = 'SurrealDB', skills = ['Rust', UPDATE ONLY person:tobie SET name = 'Tobie', company = 'SurrealDB', skills = ['Rust', 'Go', 'JavaScript']; ``` +### Logins +Create a login table +`DEFINE TABLE user SCHEMAFULL PERMISSIONS FOR select, update, delete WHERE id = $auth.id;` + +Define some fields +`DEFINE FIELD name ON user TYPE string ASSERT string::len($value) >= 2;` +`DEFINE FIELD username ON user TYPE string VALUE string::lowercase($value);` +`DEFINE FIELD password ON user TYPE string PERMISSIONS FOR select NONE;` + +Create the login +`DEFINE SCOPE user SESSION 7d SIGNIN ( SELECT * FROM user WHERE username = $username AND crypto::argon2::compare(password, $password) ) SIGNUP ( CREATE user CONTENT { name: $name, username: $username, password: crypto::argon2::generate($password) } );` \ No newline at end of file