lora-ruby 0.4.0 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/lora_ruby/version.rb +1 -1
- data/src/lib.rs +37 -14
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 93108d86cc62dc1e96f8f4f486696b9b422a4ccf62119e56c79131df476a8144
|
|
4
|
+
data.tar.gz: a2d547e01de27be476b969c8cecfdaaf940eda38b58ea39a930a16bf57001c98
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 53a6ef06bc8d0e456d53100fde0ee2aeae43085d4923b65842f70b014360d7ab18025f70f7ac09a101fb7916cfabe0f385fa632cea1b8105440a24011ef657f7
|
|
7
|
+
data.tar.gz: 90f93b470012d15fb981e79db8ae47913396f95de2a7379e3258749ef5bbaab70b9712d480f268759c96a4e0996bbd1bed044b1406e1dac4ef76edf1aba9ad90
|
data/lib/lora_ruby/version.rb
CHANGED
|
@@ -10,5 +10,5 @@ module LoraRuby
|
|
|
10
10
|
# Guard against redefinition so re-requiring this file (or loading
|
|
11
11
|
# both paths) doesn't emit a "warning: already initialized constant"
|
|
12
12
|
# when the native extension loads second with the identical value.
|
|
13
|
-
VERSION = "0.
|
|
13
|
+
VERSION = "0.5.0" unless const_defined?(:VERSION)
|
|
14
14
|
end
|
data/src/lib.rs
CHANGED
|
@@ -24,8 +24,8 @@ use magnus::{
|
|
|
24
24
|
};
|
|
25
25
|
|
|
26
26
|
use lora_database::{
|
|
27
|
-
Database as InnerDatabase, ExecuteOptions, InMemoryGraph, LoraValue,
|
|
28
|
-
|
|
27
|
+
Database as InnerDatabase, DatabaseOpenOptions, ExecuteOptions, InMemoryGraph, LoraValue,
|
|
28
|
+
QueryResult, ResultFormat,
|
|
29
29
|
};
|
|
30
30
|
use lora_store::{
|
|
31
31
|
LoraDate, LoraDateTime, LoraDuration, LoraLocalDateTime, LoraLocalTime, LoraPoint, LoraTime,
|
|
@@ -138,8 +138,9 @@ impl Database {
|
|
|
138
138
|
// singletons so callers can use whichever idiom they prefer; both are
|
|
139
139
|
// cost-equivalent.
|
|
140
140
|
fn database_new(ruby: &Ruby, args: &[Value]) -> Result<Database, MagnusError> {
|
|
141
|
-
let
|
|
142
|
-
let db = without_gvl(move || open_database(
|
|
141
|
+
let (database_name, options) = database_open_args(ruby, args)?;
|
|
142
|
+
let db = without_gvl(move || open_database(database_name, options))
|
|
143
|
+
.map_err(|e| query_error(ruby, e))?;
|
|
143
144
|
Ok(Database::from_db(db))
|
|
144
145
|
}
|
|
145
146
|
|
|
@@ -233,28 +234,50 @@ fn snapshot_meta_to_rhash(
|
|
|
233
234
|
Ok(h)
|
|
234
235
|
}
|
|
235
236
|
|
|
236
|
-
fn
|
|
237
|
+
fn database_open_args(
|
|
238
|
+
ruby: &Ruby,
|
|
239
|
+
args: &[Value],
|
|
240
|
+
) -> Result<(Option<String>, DatabaseOpenOptions), MagnusError> {
|
|
237
241
|
match args.len() {
|
|
238
|
-
0 => Ok(None),
|
|
242
|
+
0 => Ok((None, DatabaseOpenOptions::default())),
|
|
239
243
|
1 => {
|
|
240
244
|
if args[0].is_nil() {
|
|
241
|
-
Ok(None)
|
|
245
|
+
Ok((None, DatabaseOpenOptions::default()))
|
|
246
|
+
} else {
|
|
247
|
+
Ok((
|
|
248
|
+
Some(RString::try_convert(args[0])?.to_string()?),
|
|
249
|
+
DatabaseOpenOptions::default(),
|
|
250
|
+
))
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
2 => {
|
|
254
|
+
let database_name = if args[0].is_nil() {
|
|
255
|
+
None
|
|
242
256
|
} else {
|
|
243
|
-
|
|
257
|
+
Some(RString::try_convert(args[0])?.to_string()?)
|
|
258
|
+
};
|
|
259
|
+
let mut options = DatabaseOpenOptions::default();
|
|
260
|
+
let hash = RHash::try_convert(args[1])?;
|
|
261
|
+
if let Some(dir) = hash_get_either(ruby, hash, "database_dir")
|
|
262
|
+
.or_else(|| hash_get_either(ruby, hash, "databaseDir"))
|
|
263
|
+
{
|
|
264
|
+
options.database_dir = RString::try_convert(dir)?.to_string()?.into();
|
|
244
265
|
}
|
|
266
|
+
Ok((database_name, options))
|
|
245
267
|
}
|
|
246
268
|
n => Err(MagnusError::new(
|
|
247
269
|
ruby.exception_arg_error(),
|
|
248
|
-
format!("wrong number of arguments (given {n}, expected 0..
|
|
270
|
+
format!("wrong number of arguments (given {n}, expected 0..2)"),
|
|
249
271
|
)),
|
|
250
272
|
}
|
|
251
273
|
}
|
|
252
274
|
|
|
253
|
-
fn open_database(
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
275
|
+
fn open_database(
|
|
276
|
+
database_name: Option<String>,
|
|
277
|
+
options: DatabaseOpenOptions,
|
|
278
|
+
) -> Result<Arc<InnerDatabase<InMemoryGraph>>, String> {
|
|
279
|
+
let db = match database_name {
|
|
280
|
+
Some(name) => InnerDatabase::open_named(name, options).map_err(|e| e.to_string())?,
|
|
258
281
|
None => InnerDatabase::in_memory(),
|
|
259
282
|
};
|
|
260
283
|
Ok(Arc::new(db))
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: lora-ruby
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.5.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- LoraDB, Inc.
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2026-04-
|
|
11
|
+
date: 2026-04-27 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: rb_sys
|