Commit graph

376 commits

Author SHA1 Message Date
Tobie Morgan Hitchcock
7bb4aa74f3 Move authentication code to separate module 2022-07-04 01:46:09 +01:00
Tobie Morgan Hitchcock
187d9c08dc Allow ‘application/octet-stream’ content-type when importing 2022-07-04 01:25:35 +01:00
Tobie Morgan Hitchcock
d04db02ee0 Add introductory message to command-line app 2022-06-28 11:54:04 +01:00
Tobie Morgan Hitchcock
eff4d2c5e9 Implement scope signup and signin functionality 2022-06-20 12:29:06 +01:00
Tobie Morgan Hitchcock
b4e2082196 Use BTreeMap for database execution variables 2022-06-20 02:13:28 +01:00
Tobie Morgan Hitchcock
52e8954ae4 Ensure library works in multi-threaded and single-threaded environments 2022-05-16 00:04:11 +01:00
Tobie Morgan Hitchcock
f414198fad Only begin a transaction if needed for authentication 2022-05-13 22:07:56 +01:00
Tobie Morgan Hitchcock
7bd5802e99 Remove tokio as a dependency
Closes SUR-102
2022-05-13 21:57:40 +01:00
Tobie Morgan Hitchcock
e4619be89a Implement WebSocket queries for /sql endpoint 2022-05-11 22:34:28 +01:00
Tobie Morgan Hitchcock
d29961ee19 Ensure Errors can be converted into Strings 2022-05-11 21:43:11 +01:00
Tobie Morgan Hitchcock
f5687abeab Add documentation comments to main binary package 2022-05-11 15:23:15 +01:00
Tobie Morgan Hitchcock
17e8ea55b5 Implement SQL database exporting and importing 2022-05-11 15:23:15 +01:00
Tobie Morgan Hitchcock
3498e57e04 Implement web authentication session validation 2022-05-11 15:23:15 +01:00
Tobie Morgan Hitchcock
d761a6df47 Add TLS support to SurrealDB server 2022-05-11 15:23:08 +01:00
Tobie Morgan Hitchcock
ba7c31e2dc Improve server configuration parsing and option storage 2022-05-11 15:23:08 +01:00
Tobie Morgan Hitchcock
69b18cc659 Change content length limits of http routes 2022-05-11 15:23:08 +01:00
Tobie Morgan Hitchcock
f7b82bc7bd When unset, ensure default root password in randomised 2022-05-07 16:11:19 +01:00
Tobie Morgan Hitchcock
0ff3d0f7d0 Remove auth CLI argument and use user + pass instead 2022-05-07 15:13:58 +01:00
Tobie Morgan Hitchcock
ffc3ed82f7 Simplify external API when working with Datastore 2022-05-04 00:07:46 +01:00
Tobie Morgan Hitchcock
7e2eae32c5 Ensure query auth level checks are logically correct 2022-04-01 00:36:23 +01:00
Tobie Morgan Hitchcock
b3c4f982ec Fix clippy lint errors 2022-03-25 20:31:45 +00:00
Tobie Morgan Hitchcock
7e4bf91a48 Forbid all usage of unsafe code 2022-03-23 15:12:29 +00:00
Tobie Morgan Hitchcock
2a0d46a2b6 Remove unused macros 2022-03-07 18:14:42 +00:00
Tobie Morgan Hitchcock
d1c2daaee4 Apply cargo clippy lint recommendations 2022-03-05 14:42:58 +00:00
Tobie Morgan Hitchcock
d5c53b7791 Extract core surrealdb code into separate library 2022-02-22 14:16:50 +00:00
Tobie Morgan Hitchcock
12aea63928 Use trice instead of std::time for performance measurement 2022-02-19 23:30:43 +00:00
Tobie Morgan Hitchcock
222e417c79 Change method argument names 2022-02-19 23:09:23 +00:00
Tobie Morgan Hitchcock
8a08de951e Ensure session auth data is passed to executor options 2022-02-18 19:09:00 +00:00
Tobie Morgan Hitchcock
691d6ac895 Move byte formatting macro to macro module 2022-02-17 08:05:25 +00:00
Tobie Morgan Hitchcock
10a76ec3a1 Inject datastore instance instead of globally instantiated instance 2022-02-17 08:04:08 +00:00
Tobie Morgan Hitchcock
b98986fa12 Remove unnecessary 'anyhow' crate 2022-02-16 23:45:23 +00:00
Tobie Morgan Hitchcock
a5c1d95a64 Add initial implementation for parallel execution 2022-02-15 03:40:01 +00:00
Tobie Morgan Hitchcock
36d114be55 Simplify module import statements 2022-02-15 03:34:57 +00:00
Tobie Morgan Hitchcock
f22352aee6 Switch to asynchronous owned mutex locks in underlying kv storage 2022-02-15 03:33:16 +00:00
Tobie Morgan Hitchcock
efa67bb043 Only pass transaction when processing queries
Instead of passing the executor instance, we only need to pass the current transaction which is to be used for processing and running any queries.
2022-02-15 01:05:39 +00:00
Tobie Morgan Hitchcock
acc466c360 Remove unnecessary imports 2022-02-15 00:15:53 +00:00
Tobie Morgan Hitchcock
113d02cbfc Add functionality to extract a single query response 2022-02-14 23:21:12 +00:00
Tobie Morgan Hitchcock
ea67af5a29 Ensure DELETE statements WHERE clauses are processed 2022-02-14 22:20:11 +00:00
Tobie Morgan Hitchcock
5f3c5b8e73 Replace xid with nanoid for record ID generation 2022-02-14 10:19:18 +00:00
Tobie Morgan Hitchcock
6715ac251b Allow any value in CONTENT / REPLACE / MERGE clauses 2022-02-13 23:39:10 +00:00
Tobie Morgan Hitchcock
1ca5f085c5 Revert geolocation point display output format 2022-02-13 23:37:54 +00:00
Tobie Morgan Hitchcock
9a2f8f737a Simplify query variable creation 2022-02-13 23:37:30 +00:00
Tobie Morgan Hitchcock
ae70844524 Simplify server setup configuration options 2022-02-13 23:34:21 +00:00
Tobie Morgan Hitchcock
fbd924fbac Use copy-on-write semantics for document values
Instead of blindly cloning document values (even if we don't need to mutate them), we now use copy-on-write semantics to only create a copy if we need to update a document value. This improves performance, especially when selecting documents.
2022-02-13 19:03:00 +00:00
Tobie Morgan Hitchcock
5e25435b9a Use custom string for geometries output 2022-02-11 01:59:02 +00:00
Tobie Morgan Hitchcock
556a3db60e Fix geometry collection parsing 2022-02-11 01:57:52 +00:00
Tobie Morgan Hitchcock
81164410fb Use bincode serialization for data values 2022-02-10 12:49:09 +00:00
Tobie Morgan Hitchcock
d0a0065807 Rename 'web' module to 'net' 2022-02-09 15:55:04 +00:00
Tobie Morgan Hitchcock
007ab9efbf Improve web header performance 2022-02-09 13:55:21 +00:00
Tobie Morgan Hitchcock
8cd1cfba08 Remove unnecessary public export 2022-02-09 09:27:04 +00:00
Tobie Morgan Hitchcock
6d622badc3 Check if record actually exists when selecting 2022-02-09 08:57:34 +00:00
Tobie Morgan Hitchcock
9d957849b0 Dont cancel iterator when recieving an Ignore error 2022-02-09 08:53:47 +00:00
Tobie Morgan Hitchcock
a9978fdcda Enable conversion to/from Vec<u8> for record values 2022-02-09 08:50:05 +00:00
Tobie Morgan Hitchcock
811064bb05 No need to clone data when setting 2022-02-09 08:49:22 +00:00
Tobie Morgan Hitchcock
9e50db40d8 Enable setting record keys values when record is NONE 2022-02-09 08:49:08 +00:00
Tobie Morgan Hitchcock
5e0e144acb Use Value::base() as the default record value 2022-02-09 08:23:14 +00:00
Tobie Morgan Hitchcock
be7f22e35b Don't store selected NS and DB on executor 2022-02-08 14:50:45 +00:00
Tobie Morgan Hitchcock
49a62aaba5 Add initial iterator blueprint implementation 2022-02-06 01:14:56 +00:00
Tobie Morgan Hitchcock
1600360230 Fix code spacing 2022-02-06 00:46:57 +00:00
Tobie Morgan Hitchcock
c98dfc6761 Add support for CBOR and MessagePack output serialization 2022-02-05 23:06:16 +00:00
Tobie Morgan Hitchcock
b419a36384 Add initial blueprint code for SQL export functionality 2022-02-05 09:56:03 +00:00
Tobie Morgan Hitchcock
f4029e0689 Ensure remote record fetching works correctly 2022-02-05 09:24:39 +00:00
Tobie Morgan Hitchcock
40049aefb0 Ensure futures are processed when selecting data 2022-01-31 23:58:08 +00:00
Tobie Morgan Hitchcock
744b480f88 Add Into<Vec<u8>> and From<Vec<u8>> for storage keys 2022-01-31 23:11:06 +00:00
Tobie Morgan Hitchcock
c3cf0e5e24 Ensure object diffing works correctly when values are the same 2022-01-31 21:17:28 +00:00
Tobie Morgan Hitchcock
dc22d4e40e Process array values concurrently 2022-01-30 23:32:00 +00:00
Tobie Morgan Hitchcock
89867e9bfb Remove unused constant 2022-01-30 19:31:48 +00:00
Tobie Morgan Hitchcock
da811b29bd Allow upper or lower case in OPTION statements 2022-01-30 18:59:12 +00:00
Tobie Morgan Hitchcock
6a5faf852d No need for mutable executor in tests 2022-01-29 16:20:24 +00:00
Tobie Morgan Hitchcock
76f249589a Reorder OUTPUT clause values and make NULL default 2022-01-27 11:18:41 +00:00
Tobie Morgan Hitchcock
0f4f07d5d3 Improve error message when transaction is cancelled 2022-01-27 08:25:05 +00:00
Tobie Morgan Hitchcock
ff5a5fd346 Implement SQL query debugging in response output 2022-01-27 08:21:04 +00:00
Tobie Morgan Hitchcock
92e24e2201 Buffer responses in a transaction
When running in a transaction, results are now buffered, and are output on COMMIT or CANCEL. If any error has occured, then all of the responses will be marked as failed.
2022-01-27 08:15:20 +00:00
Tobie Morgan Hitchcock
374644b9bd Improve type::thing() function
When running type::thing() with a record id the function now returns the correct record. For example type::thing("test", test:id) now returns the record test:id.
2022-01-26 13:58:39 +00:00
Tobie Morgan Hitchcock
835018d5f4 Finish implementation of executor transaction logic 2022-01-26 13:57:17 +00:00
Tobie Morgan Hitchcock
ca57df132e Ensure writable transactions work correctly 2022-01-26 13:50:38 +00:00
Tobie Morgan Hitchcock
f6f54cf4f4 Only pass immutable executor when computing values 2022-01-25 21:30:32 +00:00
Tobie Morgan Hitchcock
351ef8264a Update 3rd party dependencies 2022-01-23 15:03:37 +00:00
Tobie Morgan Hitchcock
cd26de7c3f Finish implementation of record DIFF and PATCH 2022-01-23 10:35:40 +00:00
Tobie Morgan Hitchcock
f30b953e19 Change DIFF clause to PATCH 2022-01-21 13:23:28 +00:00
Tobie Morgan Hitchcock
adff751a7e Ensure context canceller takes a reference 2022-01-21 12:51:05 +00:00
Tobie Morgan Hitchcock
3ffd194a05 Ensure CONTENT and REPLACE clauses accept only an object 2022-01-20 23:09:42 +00:00
Tobie Morgan Hitchcock
9390ae9821 Add SQL statement logging 2022-01-20 23:06:58 +00:00
Tobie Morgan Hitchcock
722f156b7d Remove unused method 2022-01-20 23:03:28 +00:00
Tobie Morgan Hitchcock
63747612e3 Return a Result from async methods on Value
Instead of silently failing, the async methods on a Value for getting, setting, and updating the value, now return a Result. This means we can chain the awaited result using the ? operator.
2022-01-20 23:02:04 +00:00
Tobie Morgan Hitchcock
c86a53502d Remove unused type 2022-01-20 20:30:54 +00:00
Tobie Morgan Hitchcock
e153c791f3 Use usize for START and LIMIT clauses 2022-01-20 20:26:28 +00:00
Tobie Morgan Hitchcock
f8848e36f5 Ensure functions can be run asynchronously 2022-01-19 14:33:55 +00:00
Tobie Morgan Hitchcock
3b5966144c Ensure errors are sent when JSON request parsing fails 2022-01-19 11:35:35 +00:00
Tobie Morgan Hitchcock
1a96bd1ed9 Add new time::group function 2022-01-18 22:23:46 +00:00
Tobie Morgan Hitchcock
b29db4d999 Improve error passing in SQL parser 2022-01-17 09:00:23 +00:00
Tobie Morgan Hitchcock
8b28a8e5f2 Remove unnecessary functions for parsing Tables 2022-01-15 22:13:32 +00:00
Tobie Morgan Hitchcock
f202bd5ab4 Improve SQL parsing errors 2022-01-15 09:51:57 +00:00
Tobie Morgan Hitchcock
91c53e4188 Improve empty query errors 2022-01-14 22:35:44 +00:00
Tobie Morgan Hitchcock
4eca618b77 Add failure recovery to web package 2022-01-14 17:13:44 +00:00
Tobie Morgan Hitchcock
67d6289d0e Attach request variables to query executor context 2022-01-14 08:31:14 +00:00
Tobie Morgan Hitchcock
3126251a65 Convert all processing code to async 2022-01-14 08:12:56 +00:00
Tobie Morgan Hitchcock
db9960fcbe Ensure wasm library builds correctly 2022-01-13 17:53:30 +00:00
Tobie Morgan Hitchcock
87e1b38f02 Add initial key-value storage key implementation 2022-01-13 17:40:20 +00:00
Tobie Morgan Hitchcock
ff6a41326a Add base library file for wasm build 2022-01-13 17:39:17 +00:00
Tobie Morgan Hitchcock
f3de9095ae Add further SQL function implementations 2022-01-13 17:37:46 +00:00
Tobie Morgan Hitchcock
6e031110bb Large update to code to convert Golang to Rust 2022-01-13 17:37:38 +00:00
Tobie Morgan Hitchcock
4f4793975e Add initial kvs backend storage code 2022-01-13 17:35:48 +00:00
Tobie Morgan Hitchcock
9e62e8f367 Add initial iterator blueprint implementation 2022-01-13 07:31:21 +00:00
Tobie Morgan Hitchcock
c51e60e706 Add query session and authentication logic 2022-01-13 07:31:02 +00:00
Tobie Morgan Hitchcock
9e5e6efa6d Add document package blueprint 2022-01-13 07:00:50 +00:00
Tobie Morgan Hitchcock
e89ebb2c79 Use Strings in context values map 2022-01-13 06:58:08 +00:00
Tobie Morgan Hitchcock
f02e12c63a Add ability to convert context errors to generic errors 2022-01-13 06:57:46 +00:00
Tobie Morgan Hitchcock
643344151b Verify database path parameter on command-line 2022-01-13 06:56:24 +00:00
Tobie Morgan Hitchcock
469de77609 Enlarge web body input size from 1KiB to 1MiB 2021-12-14 10:24:54 +00:00
Tobie Morgan Hitchcock
74d8a36056 Improve string parsing and allow escaped characters 2021-12-14 10:24:54 +00:00
Tobie Morgan Hitchcock
203b85e6d2 Ensure <cast> functions only operate on a single expression 2021-12-14 10:24:54 +00:00
Tobie Morgan Hitchcock
a67bbace36 Ensure subquery parsing works correctly 2021-12-14 10:24:54 +00:00
Tobie Morgan Hitchcock
11df879fc0 Ensure operator parsing works correctly 2021-12-14 10:24:54 +00:00
Tobie Morgan Hitchcock
ba60c4437f Improve regex parsing and allow ‘/‘ characters 2021-12-14 10:24:54 +00:00
Tobie Morgan Hitchcock
1f9cad9431 Ensure arrays and objects serialize correctly 2021-12-14 10:24:54 +00:00
Tobie Morgan Hitchcock
9ae2cc7cd1 Implement contains operator functionality 2021-12-14 10:24:54 +00:00
Tobie Morgan Hitchcock
bf9ceaf693 Output complex SQL operators as text not symbols 2021-12-14 10:24:54 +00:00
Tobie Morgan Hitchcock
92e9f17ade Add exactly equal operator (==) 2021-12-14 10:24:54 +00:00
Tobie Morgan Hitchcock
70dfe88dff Add additional geo functions 2021-12-14 10:24:54 +00:00
Tobie Morgan Hitchcock
1324fed1b3 Ensure polygon has at least 1 geographical point 2021-12-14 10:24:54 +00:00
Tobie Morgan Hitchcock
b196f16f68 Remove unused fields from database Response struct 2021-12-14 10:24:54 +00:00
Tobie Morgan Hitchcock
5b58c5fa0e Convert Parent to Runtime for query variable storage 2021-12-14 10:24:54 +00:00
Tobie Morgan Hitchcock
7768e85145 Enable embedded paths in param names 2021-12-14 10:24:54 +00:00
Tobie Morgan Hitchcock
5d57c105b9 Continue with initial code 2021-12-14 10:24:54 +00:00
Tobie Morgan Hitchcock
dfcfb32903 Add initial code 2021-12-14 10:24:54 +00:00