Commit graph

62 commits

Author SHA1 Message Date
Tobie Morgan Hitchcock
a1d8494de1 Only parse JavaScript functions beginning with function() 2023-03-30 15:19:18 +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
fb2356b17a Add SQL array::add() function for adding unique items
Related to #1690
2023-03-26 08:53:37 +01:00
Tobie Morgan Hitchcock
b49d58a362 Add additional SQL array functions
Closes #1725
Related to #1690

Add `array::append()`, `array::pop()`, `array::prepend()`, `array::push()`, `array::remove()`, and `array::reverse()` SQL functions
2023-03-25 22:37:47 +00:00
Tobie Morgan Hitchcock
cdac4f84cd Add support for custom SQL functions
Closes #247
2023-03-25 19:44:03 +00:00
Tobie Morgan Hitchcock
9afb3499ae Sort casting functions by name 2023-03-20 15:22:19 +00:00
Emmanuel Keller
f3e605afde
Implements transaction isolation testing (#1674) 2023-03-10 15:24:27 +00:00
Tobie Morgan Hitchcock
5e2157a0a2 Rename SQL string::length() function to string::len() 2023-02-18 21:07:37 +00:00
Tobie Morgan Hitchcock
94cdef565f Ensure function arguments are processed concurrently 2023-02-12 12:18:47 +00:00
Tobie Morgan Hitchcock
84b026679f Update clippy linting tests 2023-02-03 11:47:07 +00:00
Tobie Morgan Hitchcock
30953bc2a3 Add SQL rand::ulid() function
Related to #1353
2023-01-17 09:02:01 +00:00
Tobie Morgan Hitchcock
3a1294029e Add SQL array::all(), array::any(), array::min(), and array::max() functions
Closes #1588
2023-01-17 09:00:30 +00:00
Tobie Morgan Hitchcock
2949ea7f4d Add SQL is::datetime() function
Closes #1301
2023-01-09 09:52:21 +00:00
Tobie Morgan Hitchcock
f5739cba48 Add SQL time::timezone() function
Related to #1428
2023-01-09 09:52:20 +00:00
Tobie Morgan Hitchcock
1cef0946dc Don’t allow invalid aggregate functions to be used in GROUP BY clauses 2023-01-08 14:36:44 +00:00
Tobie Morgan Hitchcock
b53103c9c7 Add SQL array::group() function 2023-01-07 19:40:56 +00:00
Tobie Morgan Hitchcock
98a5d75d63 Add SurrealQL functions to JavaScript runtime 2023-01-04 07:51:21 +00:00
Finn Bear
54f337c15b
Add not function for negation of a value (#1542) 2022-12-30 09:34:46 +00:00
Tobie Morgan Hitchcock
1ce6c4bae6 Process futures before using as function arguments
Closes #1538
2022-12-22 08:33:57 +00:00
Etienne Bruines
cef01ad790
Add SQL math::pow() function and ** operator (#1239) 2022-12-18 14:56:07 +00:00
Aman Sharma
e1e617cff7
Add SQL array::insert() function (#1504) 2022-12-17 21:03:13 +00:00
Tobie Morgan Hitchcock
0c2fe82f32 Allow whitespace around JavaScript function arguments
Closes #1530
2022-12-17 16:23:20 +00:00
Allen Lantz
3d3cab4b65
Add SQL array::flatten() function (#1308) 2022-11-28 12:18:30 +00:00
CelebrateVC
f0745386cf
Improve code comments for documentation (#1476) 2022-11-23 09:42:59 +00:00
Tobie Morgan Hitchcock
6b20bbd5f7 Add SQL array::complement function
Closes #1315
2022-11-03 11:49:08 +00:00
Tobie Morgan Hitchcock
7f953319ec Use consistent singular function naming for SQL time functions 2022-11-03 10:50:51 +00:00
Tobie Morgan Hitchcock
e9615cd5ff Add SQL is::url() function for checking if a string is a URL 2022-11-02 14:26:27 +00:00
Tobie Morgan Hitchcock
426fce00a8 Separate Future into standalone type 2022-10-31 23:24:44 +00:00
Allen Lantz
d1055e6088
Implement hashed implementation of Uniq<Array> (#1310) 2022-10-27 05:23:24 -07:00
Tobie Morgan Hitchcock
c9243dec3c Add new functions for gnerating v4 and v7 UUIDs
Related to #1353
2022-10-16 23:38:50 +01:00
Finn Bear
88100854a8
Limit computation depth in functions, futures, and subqueries. (#241) 2022-10-06 17:35:03 +01:00
Finn Bear
45e1a9adce
Refactor, optimization, cleanup (#1288) 2022-10-04 22:51:18 +01:00
Tobie Morgan Hitchcock
1d02601a4b Add time::format SQL function 2022-10-04 22:26:03 +01:00
Tobie Morgan Hitchcock
80040152a2 Add parse::url::scheme function for parsing a url protocol/scheme
Closes #1304
2022-10-04 00:28:30 +01:00
Hugo Saracino
58cffa2de6
Add duration functions for calculating durations as integers (#257) 2022-09-23 00:48:49 +01:00
James
782a5d4be6
Add crypto::bcrypt::generate and crypto::bcrypt::compare functions (#224) 2022-09-20 08:14:58 +01:00
Tobie Morgan Hitchcock
70970862f4 Add meta::id() and meta::tb() functions 2022-09-19 03:57:06 +01:00
Tobie Morgan Hitchcock
2bc44af8cd Add session::token() function for retrieving authentication token claims data 2022-09-17 03:05:23 +01:00
Tobie Morgan Hitchcock
10f01f365f Add session::sd() SQL function for retrieving session auth data 2022-09-05 00:57:09 +01:00
Rushmore Mushambi
04831b1831
Make validation and parser functions more robust (#89)
Closes #87
2022-09-01 18:46:36 +01:00
Tobie Morgan Hitchcock
bcaea757c2 Add SQL session functions 2022-08-17 22:45:31 +01:00
Tobie Morgan Hitchcock
13d3d02dcf Add SQL array sorting functions 2022-08-11 17:41:20 +01:00
Tobie Morgan Hitchcock
d647e40d49 Define main embedded function script as a JavaScript module 2022-07-24 01:15:26 +01:00
Tobie Morgan Hitchcock
66946397ed Use function() {} instead of fn::future -> () => {} syntax for SQL embedded functions
Closes #8
2022-07-24 01:15:26 +01:00
Tobie Morgan Hitchcock
a71562df9f Use <future> instead of fn::future syntax for SQL futures
Closes #9
2022-07-24 01:15:26 +01:00
Tobie Morgan Hitchcock
31adc4538d Implement DEFINE TABLE AS foreign table statements 2022-07-16 23:24:04 +01:00
Tobie Morgan Hitchcock
527361efd4 Ensure script function is asynchronous 2022-07-04 01:25:35 +01:00
Tobie Morgan Hitchcock
bc16645d38 Ensure library build only includes specified features 2022-07-03 10:43:23 +01:00
Tobie Morgan Hitchcock
219f4a54ed Enable ability to pass arguments to JavaScript functions 2022-06-28 11:54:04 +01:00
Tobie Morgan Hitchcock
a78df680d2 Implement embedded javascript script functions 2022-05-21 09:39:40 +01:00