syncbase: switch to /$/ hierarchy separator scheme
For detailed description, see http://v.io/c/15374
MultiPart: 5/5
Change-Id: Iff00e2da688276b5335f28119dab047cb827d4de
diff --git a/dart/lib/src/app.dart b/dart/lib/src/app.dart
index 74d5a58..8ec5313 100644
--- a/dart/lib/src/app.dart
+++ b/dart/lib/src/app.dart
@@ -4,12 +4,14 @@
part of syncbase_client;
+// TODO(sadovsky): Add listDatabases method.
class SyncbaseApp extends NamedResource {
- SyncbaseApp._internal(_proxy, fullName)
- : super._internal(_proxy, null, fullName);
+ // NOTE(sadovsky): For the Mojo Syncbase service, we only store names from app
+ // down - i.e. there is no service name.
+ SyncbaseApp._internal(_proxy, relativeName)
+ : super._internal(_proxy, null, relativeName);
- // noSqlDatabase returns the noSqlDatabase with the given relativeName.
- // relativeName must not contain slashes.
+ // noSqlDatabase returns a noSqlDatabase with the given relativeName.
SyncbaseNoSqlDatabase noSqlDatabase(String relativeName) {
return new SyncbaseNoSqlDatabase._internal(_proxy, fullName, relativeName);
}
diff --git a/dart/lib/src/named_resource.dart b/dart/lib/src/named_resource.dart
index 1eb6f33..23058f9 100644
--- a/dart/lib/src/named_resource.dart
+++ b/dart/lib/src/named_resource.dart
@@ -14,10 +14,8 @@
mojom.SyncbaseProxy _proxy, String _parentFullName, String relativeName)
: this._proxy = _proxy,
this.relativeName = relativeName,
- this.fullName = (_parentFullName == null ? '' : _parentFullName + '/') +
- relativeName {
- if (relativeName.contains('/')) {
- throw 'relativeName cannot contain "/": $relativeName';
- }
- }
+ this.fullName = (_parentFullName == null
+ ? ''
+ : (_parentFullName + '/\$/')) +
+ relativeName {}
}
diff --git a/dart/lib/src/nosql/database.dart b/dart/lib/src/nosql/database.dart
index d9711dc..e3453d7 100644
--- a/dart/lib/src/nosql/database.dart
+++ b/dart/lib/src/nosql/database.dart
@@ -4,12 +4,12 @@
part of syncbase_client;
+// TODO(sadovsky): Add listTables method.
class SyncbaseNoSqlDatabase extends NamedResource {
SyncbaseNoSqlDatabase._internal(_proxy, _parentFullName, relativeName)
: super._internal(_proxy, _parentFullName, relativeName);
- // table returns a table with the given relativeName. relativeName must not
- // contain slashes.
+ // table returns a table with the given relativeName.
SyncbaseTable table(String relativeName) {
return new SyncbaseTable._internal(_proxy, fullName, relativeName);
}
diff --git a/dart/lib/src/nosql/row.dart b/dart/lib/src/nosql/row.dart
index 26f1ee3..3eeaecf 100644
--- a/dart/lib/src/nosql/row.dart
+++ b/dart/lib/src/nosql/row.dart
@@ -5,8 +5,11 @@
part of syncbase_client;
class SyncbaseRow extends NamedResource {
- SyncbaseRow._internal(_proxy, _parentFullName, relativeName)
- : super._internal(_proxy, _parentFullName, relativeName);
+ final String key;
+
+ SyncbaseRow._internal(_proxy, _parentFullName, key)
+ : super._internal(_proxy, _parentFullName, key),
+ this.key = key;
Future<bool> exists() async {
var v = await _proxy.ptr.rowExists(fullName);
diff --git a/dart/lib/src/nosql/table.dart b/dart/lib/src/nosql/table.dart
index f5e447b..619a634 100644
--- a/dart/lib/src/nosql/table.dart
+++ b/dart/lib/src/nosql/table.dart
@@ -8,6 +8,7 @@
SyncbaseTable._internal(_proxy, _parentFullName, relativeName)
: super._internal(_proxy, _parentFullName, relativeName);
+ // row returns a row with the given key.
SyncbaseRow row(String key) {
return new SyncbaseRow._internal(_proxy, fullName, key);
}
diff --git a/dart/lib/syncbase_client.dart b/dart/lib/syncbase_client.dart
index 3bbb764..bba7982 100644
--- a/dart/lib/syncbase_client.dart
+++ b/dart/lib/syncbase_client.dart
@@ -32,6 +32,7 @@
return err != null && err.id != '';
}
+// TODO(sadovsky): Add listApps method.
class SyncbaseClient {
final mojom.SyncbaseProxy _proxy;
@@ -48,7 +49,7 @@
return _proxy.close(immediate: immediate);
}
- // app returns the app with the given name, which should not contain slashes.
+ // app returns the app with the given name.
SyncbaseApp app(String name) => new SyncbaseApp._internal(_proxy, name);
Future<mojom.Perms> getPermissions() async {
diff --git a/mojom/syncbase.mojom b/mojom/syncbase.mojom
index d4004dd..8d4a739 100644
--- a/mojom/syncbase.mojom
+++ b/mojom/syncbase.mojom
@@ -62,6 +62,7 @@
};
// TODO(sadovsky): Add schema version to all RPCs. See v.io/c/13734.
+// TODO(sadovsky): Add ListApps, ListDatabases, and ListTables methods.
// All 'name' params are service-relative object names.
// Error handling modeled after: