Commit graph

463 commits

Author SHA1 Message Date
Rushmore Mushambi
179878d672
Add compile-time guarantees to make Surreal::delete safer (#1753) 2023-03-31 23:49:29 +01:00
Tobie Morgan Hitchcock
725b03729b Enable full-type serialisation on HTTP import route 2023-03-31 15:31:24 +01:00
Diptesh Choudhuri
494203d358
Allow exporting to stdout (#1701) 2023-03-30 19:13:26 +01:00
Rushmore Mushambi
3e80aa9914
Implement to_value for sql::Value (#1659)
`sql::Value` is an integral part of `surrealdb`. It's the internal type used by our storage layer. Because of this, we do a lot of converting between this type and native Rust types. Currently this conversion is done through `JSON` using the `serde_json` crate because we do not have our own custom data format implementation. This works because `SQL` is a superset of `JSON`.  This, however, means that this conversion is lossy and can cause surprises in some cases. For example expecting record IDs to be deserialized into a `String` instead of its corresponding Rust native type.

This change implements a custom data format around `sql::Value` and introduces a `to_value` function that facilitates that conversion.
2023-03-30 11:41:44 +01:00
Tobie Morgan Hitchcock
e0cad89a8c Improve error logging within CLI tool 2023-03-29 19:19:46 +01:00
Salvador Girones Gil
565717659a
Add functionality for open telemetry tracing (#1727) 2023-03-29 19:16:18 +01:00
Tobie Morgan Hitchcock
0c95126573 Add support for full binary serialization on HTTP endpoints 2023-03-27 13:52:28 +01:00
Tobie Morgan Hitchcock
2769033451 Update 3rd party dependencies 2023-03-25 20:49:00 +00:00
Emmanuel Keller
19c287a011
Implement transaction debug tracing (#1668) 2023-03-16 09:11:30 -04:00
Tobie Morgan Hitchcock
a8df2b6a6f Allow any Value in arguments to RPC use method 2023-03-07 09:55:35 +00:00
Tobie Morgan Hitchcock
7dcb0f83fa Add trace logging to WebSocket implementation 2023-03-07 09:54:58 +00:00
Tobie Morgan Hitchcock
d1558a63ad Use string formatting for SQL output in CLI
Related to #246
2023-03-07 09:54:58 +00:00
Igor Morozov
b10beda30c
Add isready CLI command for checking server health (#1679) 2023-03-07 09:53:56 +00:00
Tobie Morgan Hitchcock
454612487a Allow sending Table type for LIVE query RPC method 2023-02-14 11:01:31 +00:00
Tobie Morgan Hitchcock
5d55f28b98 Fix linting warning 2023-02-13 16:05:02 +00:00
Tobie Morgan Hitchcock
efbc5d3219 Add all WebSockets to a global collection 2023-02-13 12:20:13 +00:00
Tobie Morgan Hitchcock
ac9a574c00 Simplify passing of authentication tokens to client 2023-02-11 15:56:14 +00:00
Tobie Morgan Hitchcock
3f0afd9d72 Fix base64 authentication decoding support
Closes #1625
2023-02-09 10:54:52 +00:00
Tobie Morgan Hitchcock
c90ff5f5d1 Listen to different OS signals on Windows and Unix 2023-02-08 13:19:08 +00:00
Salvador Girones Gil
15f7fb3eee
Ensure SurrealDB listens to SIGTERM/SIGINT signals and quits gracefully (#1639) 2023-02-05 21:03:21 +00:00
Tobie Morgan Hitchcock
84b026679f Update clippy linting tests 2023-02-03 11:47:07 +00:00
Tobie Morgan Hitchcock
cf11eb7f54 Add clippy::mem_forget denial rule 2023-02-03 11:46:39 +00:00
Tobie Morgan Hitchcock
9282feac1f Allow empty params object from text-based WebSocket clients
Closes #1610
2023-01-20 00:54:33 +00:00
Tobie Morgan Hitchcock
0e70e515be Fix base64 authentication token decoding 2023-01-18 00:08:39 +00:00
Tobie Morgan Hitchcock
7682a97a33 Decode urlencoded path parameters automatically
Closes #1396
2023-01-17 14:10:21 +00:00
Tobie Morgan Hitchcock
8f89f8729c Update 3rd party dependencies
Closes #1593
2023-01-17 09:00:30 +00:00
Rushmore Mushambi
af88fcef38
Make cli::sql default to using a WebSocket connection (#1592) 2023-01-11 13:47:21 +00:00
Rushmore Mushambi
953a2008e2
Rename the engines module to engine (#1576) 2023-01-07 08:32:18 +00:00
Rushmore Mushambi
b3d9ce2c68
Ensure CLI exits with non-zero code on errors (#1567) 2022-12-31 08:03:19 +00:00
Rushmore Mushambi
f1b6c44603
Use new client library in CLI import command (#1566) 2022-12-31 08:02:53 +00:00
Rushmore Mushambi
a908d6dd10
Use new client library in CLI export command (#1565) 2022-12-31 08:02:41 +00:00
Rushmore Mushambi
a24bb4f4b8
Allow memory as an address endpoint in CLI sql command (#1563) 2022-12-30 23:53:45 +00:00
Rushmore Mushambi
7c199ff586
Use new client library in CLI sql command (#1561) 2022-12-30 21:27:19 +00:00
Rushmore Mushambi
c2dce39f91
Integrate client library into surrealdb crate (#1514) 2022-12-30 08:23:19 +00:00
Michal Jirman
157f7c8abe
Add CLI option flag to disable banner (#1537) 2022-12-21 11:42:59 +00:00
Tobie Morgan Hitchcock
44c3f32f69 Fix clippy linting warnings 2022-12-20 10:30:40 +00:00
Tobie Morgan Hitchcock
4067efd1e8 Add a user-agent header to CLI HTTP requests 2022-12-20 10:30:06 +00:00
George
a2038f239b
Fix future clippy linting warnings (#1423) 2022-12-18 16:00:36 +00:00
Rinat Shay
ad004999a8
Use temporary HTTP redirect instead of permanent (#1517) 2022-12-09 16:48:54 +00:00
Tobie Morgan Hitchcock
406e277c3b Ensure crate builds with no-default-features 2022-12-07 19:30:29 +00:00
CelebrateVC
f0745386cf
Improve code comments for documentation (#1476) 2022-11-23 09:42:59 +00:00
Igor Morozov
ddaea59d05
Improve error messages for CLI import/export (#1455) 2022-11-23 09:35:29 +00:00
Tobie Morgan Hitchcock
4b14837009 Fix clippy lint warnings 2022-11-23 09:09:24 +00:00
Finn Bear
ff65ef56fc
Don't panic on invalid UTF-8 in web requests (#1422) 2022-10-30 23:28:57 +00:00
Tobie Morgan Hitchcock
c12a1cc1fa Fix typo in code comments 2022-10-30 01:32:27 +00:00
Rushmore Mushambi
12ded8b066
Log version when starting the server (#1358) 2022-10-27 01:58:08 -07:00
Tobie Morgan Hitchcock
f32fb516eb Rearrange code order 2022-10-25 06:40:23 -07:00
Tobie Morgan Hitchcock
a074dc9af5 Add suport for WebSocket RPC binary protocol 2022-10-25 06:40:23 -07:00
Tobie Morgan Hitchcock
ab4c85bf5d Return a single record when requesting a single record with WebSocket 2022-10-25 06:40:23 -07:00
Tobie Morgan Hitchcock
05485406c4 Add support for more input types in WebSocket RPC methods 2022-10-25 06:40:23 -07:00
Tobie Morgan Hitchcock
e03f7e00db Add alias for WebSocket RPC method ‘modify’ to ‘patch’ 2022-10-25 06:40:23 -07:00
Tobie Morgan Hitchcock
1015a948fd Add alias for WebSocket RPC method ‘change’ to ‘merge’ 2022-10-25 06:40:23 -07:00
Tobie Morgan Hitchcock
926356d23b Don’t allow WebSocket RPC authenticate method to be called with no token value 2022-10-25 06:40:23 -07:00
Tobie Morgan Hitchcock
d2e7a8532d Don’t respond with an id if none was specified in the WebSocket RPC query 2022-10-25 06:40:23 -07:00
Tobie Morgan Hitchcock
df8f297221 Add WebSocket RPC unset method for clearing a parameter 2022-10-25 06:40:23 -07:00
Tobie Morgan Hitchcock
70a263f799 Add code comments to WebSocket RPC methods 2022-10-25 06:40:23 -07:00
Tobie Morgan Hitchcock
a0d86248e2 Enable different output serialization formats in WebSocket RPC 2022-10-25 06:40:23 -07:00
Tobie Morgan Hitchcock
d12384f3fb Change method signature for converting strings to table names 2022-10-25 06:40:23 -07:00
Tobie Morgan Hitchcock
3cbb5eed78 Allow datetimes as an id parameter in the WebSocket RPC message 2022-10-25 06:06:02 -07:00
Tobie Morgan Hitchcock
6ff1e250de Add improved handling of different WebSocket message types 2022-10-19 23:57:05 +01:00
Rushmore Mushambi
f0eaf2bd19
Improve RPC method return types (#1384) 2022-10-19 23:54:41 +01:00
Tobie Morgan Hitchcock
c098fe3380 Respond to WebSocket ping messages with a pong message 2022-10-19 21:11:15 +01:00
Tobie Morgan Hitchcock
1becd3ab55 Don’t throw an RPC Error when no params key is specified 2022-10-19 18:57:03 +01:00
Tobie Morgan Hitchcock
65f8194a1f Fix code linting warnings 2022-10-19 15:35:42 +01:00
Tobie Morgan Hitchcock
18d69a620c Add WebSocket ping->pong message ticker 2022-10-19 14:56:43 +01:00
Tobie Morgan Hitchcock
7ed0af4750 Add support for SQL parameters in HTTP REST endpoints 2022-10-17 02:00:15 +01:00
Tobie Morgan Hitchcock
810e174c63 Code tidy up 2022-10-16 23:20:57 +01:00
Tobie Morgan Hitchcock
264f208379 Change the log identifier for web requests 2022-10-16 17:36:07 +01:00
Tobie Morgan Hitchcock
f31b7d7d17 Allow number values for JSON RPC id field 2022-10-16 17:36:07 +01:00
Tobie Morgan Hitchcock
9546b07d71 Add version method to HTTP RPC endpoint 2022-10-16 17:36:07 +01:00
Tobie Morgan Hitchcock
90a5e82e72 ENsure session is completely clearer when invalidated
Closes #1314
2022-10-04 22:26:03 +01:00
Tobie Morgan Hitchcock
d8c7efefd4 Ensure integer Record IDs are treated correctly in HTTP REST endpoints
Closes #1281
2022-10-01 15:50:39 +01:00
Tobie Morgan Hitchcock
711df70bb9 Allow namespaced claim aliases in JWT token
Closes #1269
Closes #1268
2022-09-29 07:54:48 +01:00
Rushmore Mushambi
bcac94f9d6
Add additional build metadata to version identifier (#1254) 2022-09-28 20:13:40 +01:00
Tobie Morgan Hitchcock
a96c6ff8ca Allow authentication token to be verified with or without Bearer or Basic prefix 2022-09-28 01:19:18 +01:00
Tobie Morgan Hitchcock
a82e45f461 Enable more customisable JWT verification
Closes #1244
2022-09-27 22:07:41 +01:00
Rushmore Mushambi
c064890284
Fix the build (#1248) 2022-09-27 16:35:03 +01:00
Tobie Morgan Hitchcock
abd15ec55c Use Accept header on /import and /export HTTP routes
Closes #1245
2022-09-27 15:58:20 +01:00
Tobie Morgan Hitchcock
d8953ab7f8 Ensure HTTP session is not verified multiple times 2022-09-25 23:13:29 +01:00
Tobie Morgan Hitchcock
75d1e86990 Add DEFINE TOKEN … ON SCOPE … functionality
Closes #144
2022-09-25 22:58:38 +01:00
Tobie Morgan Hitchcock
0cb865dc44 Support different Content-Type outputs on /signup and /signin routes
Closes #1223
2022-09-25 13:05:56 +01:00
Tobie Morgan Hitchcock
2fccc87fab Don’t prettify empty responses in SQL REPL 2022-09-25 10:56:57 +01:00
Tobie Morgan Hitchcock
b9603aacab Improve HTTP error messages and status codes 2022-09-25 10:56:57 +01:00
Tobie Morgan Hitchcock
b4209180b6 Ensure server listents to SIGINT/SIGTERM signals
Closes #120
2022-09-22 03:01:11 +01:00
Tobie Morgan Hitchcock
ffeb56fc7e Redirect to temporary website holding page for app interface
Closes #219
2022-09-21 01:03:38 +01:00
Tobie Morgan Hitchcock
1dd08bedaa Handle errors properly when WebSocket client disconnects improperly
Closes #181
Closes #195
Closes #140
2022-09-20 23:04:40 +01:00
Tobie Morgan Hitchcock
d6b544771f Rename function for simplicity 2022-09-19 12:28:41 +01:00
Tobie Morgan Hitchcock
a7444a7c8e Add authentication token claims data to session object
Closes #135
2022-09-17 03:05:23 +01:00
Ryan Russell
b4b2ceb187
Make readability fixes to Rust code comments (#157) 2022-09-17 02:50:10 +01:00
Tobie Morgan Hitchcock
8403238dbb Use Accept header instead of Content-Type header for client content negotiation 2022-09-16 02:19:06 +01:00
Tobie Morgan Hitchcock
b2f4101a9c Improve HTTP request error messages
Closes #153
2022-09-16 00:41:16 +01:00
Tobie Morgan Hitchcock
23d1132526 Ignore blank/empty lines in SurrealDB SQL REPL
Closes #147
2022-09-15 00:39:25 +01:00
Tobie Morgan Hitchcock
74c3b6d708 Don’t automatically unwrap errors when sending on WebSocket
Closes #140
2022-09-13 21:50:04 +01:00
Tobie Morgan Hitchcock
498b0a4530 Fix linting errors 2022-09-10 06:11:56 +01:00
Tobie Morgan Hitchcock
eba00bbca3 Add debug logging for authentication attempts 2022-09-10 05:44:45 +01:00
Tobie Morgan Hitchcock
d20851325b Allow uppercase or lowercase keys in JWT authentication tokens 2022-09-10 05:43:50 +01:00
Tobie Morgan Hitchcock
6f0ff853f8 Ensure session data is stored on the session after signup/signin 2022-09-05 00:53:35 +01:00
Tobie Morgan Hitchcock
5ca3b74e59 Add HTTP /health endpoint for checking database and datastore status
Closes #56
2022-09-01 00:28:43 +01:00
Michael Delaney
960061584d
Add support for specifying database path using env variable DB_PATH (#78) 2022-08-31 14:03:11 +01:00
Tobie Morgan Hitchcock
cdf244f0f5 Simplify command line argument verification code 2022-08-29 13:02:20 +01:00
Tobie Morgan Hitchcock
65d91b122e Add support for simpler datastore paths 2022-08-29 12:30:00 +01:00
Tobie Morgan Hitchcock
69c166fd8e Only send NS and DB header in SQL REPL requests if specified 2022-08-26 23:16:13 +01:00
clawcastle
2bfcb9d694
Make --ns and --db arguments optional in command-line REPL (#63)
Closes #34
2022-08-26 21:51:44 +01:00
Tobie Morgan Hitchcock
e5a78bed06 Allow root authentication over WebSocket connection 2022-08-23 23:44:13 +01:00
Kian-Meng Ang
40157f6170
Fix typos (#42)
Found via `codespell -L crate,inout,ser,fetchs,te,tre,whats`.
2022-08-21 13:13:38 +01:00
Tobie Morgan Hitchcock
b8c793f7a4 Only log successful startup after server binds to desired port 2022-08-17 22:45:31 +01:00
Yusuke Kuoka
1d3880d652
Initial implementation of SurrealDB KVS for FoundationDB (#37)
Referenced in discussion #25 

Closes #38
2022-08-15 19:35:41 +01:00
Tobie Morgan Hitchcock
70a6c5a1ee Enable server configuration to be setup with environment variables 2022-08-12 21:21:32 +01:00
Tobie Morgan Hitchcock
653ced7d58 When enabled, log the root authentication username 2022-08-12 16:33:15 +01:00
Tobie Morgan Hitchcock
9ed50a9514 Add command-line SurrealQL REPL 2022-08-06 13:13:14 +01:00
Tobie Morgan Hitchcock
0043e38bef Add —host command-line option as an alias of —conn 2022-08-06 11:34:17 +01:00
Tobie Morgan Hitchcock
f535501ec2 Improve CLI command descriptions 2022-07-30 22:56:54 +01:00
Tobie Morgan Hitchcock
58698f58fe Update default endpoint for import/export requests 2022-07-29 10:39:49 +01:00
Tobie Morgan Hitchcock
fc68e59644 Simplify import / export response streaming 2022-07-29 10:37:12 +01:00
Tobie Morgan Hitchcock
d67e231431 Ensure NS+DB values are required on export CLI command 2022-07-29 10:36:54 +01:00
Tobie Morgan Hitchcock
c0d851751b Ensure NS+DB values are required on import CLI command 2022-07-29 10:36:49 +01:00
Tobie Morgan Hitchcock
f46acec96f Ensure error is returned when NS/DB header are not present 2022-07-29 10:35:15 +01:00
Tobie Morgan Hitchcock
2646ea119e Temporarily disable HTTP response compression
Disable response compression until `Accept-Encoding` headers are properly evaluated, and the compression can be chosen based on the HTTP request. This relies on https://github.com/seanmonstar/warp/pull/513 being implemented.
2022-07-29 10:33:49 +01:00
Tobie Morgan Hitchcock
d619633340 Enable new database strict mode configuration 2022-07-27 18:20:04 +01:00
Tobie Morgan Hitchcock
7777e3bccd Log a message on startup with root authentication info
Closes #11
2022-07-24 01:15:26 +01:00
Tobie Morgan Hitchcock
960a5a768b Disable root authentication when no password is set
Closes #10
2022-07-24 01:15:26 +01:00
Tobie Morgan Hitchcock
db2208a33a Store all macros in a separate module 2022-07-24 01:15:26 +01:00
Tobie Morgan Hitchcock
428fcf697a Ensure CORS headers are set on failed HTTP responses
Closes #6
2022-07-24 01:15:26 +01:00
Tobie Morgan Hitchcock
05cf6960c2 Set correct description for ‘—log’ command argument 2022-07-19 23:27:06 +01:00
Tobie Morgan Hitchcock
e1c6245151 Use new ‘—log’ command argument to specify server log level 2022-07-19 13:39:35 +01:00
Tobie Morgan Hitchcock
91b8baff3d Set default logging level for import/export/backup commands 2022-07-19 12:58:19 +01:00
Tobie Morgan Hitchcock
7860a205db Use configuration constants in version cli command 2022-07-19 12:54:50 +01:00
Tobie Morgan Hitchcock
a2619a8d72 Don’t show default random password in command-line help 2022-07-19 12:29:43 +01:00
Tobie Morgan Hitchcock
81bad3211d Improve command-line logging 2022-07-19 09:28:24 +01:00
Tobie Morgan Hitchcock
4468e10bd1 Change the default port to 8000 2022-07-18 18:49:43 +01:00
Tobie Morgan Hitchcock
d425f67a8b Allow NULL and missing values in RPC query method 2022-07-08 21:56:04 +01:00
Tobie Morgan Hitchcock
11a3911f70 Add RPC let’ command as a duplicate of ‘set’ command 2022-07-08 21:55:44 +01:00
Tobie Morgan Hitchcock
3c7bd098f3 Enable concurrent requests in WebSocket RPC Server 2022-07-07 11:25:22 +01:00
Tobie Morgan Hitchcock
4438415b55 Fix error in RPC Modify method query 2022-07-07 11:22:41 +01:00
Tobie Morgan Hitchcock
508538e0cc Add initial WebSocket JSON RPC implementation 2022-07-04 02:32:26 +01:00
Tobie Morgan Hitchcock
410295c800 Improve map! macro to allow extending the map with other map 2022-07-04 02:02:03 +01:00
Tobie Morgan Hitchcock
983a7b3f5c Add mrg! macro for merging Maps together 2022-07-04 02:02:03 +01:00
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