| // Copyright 2015 The Vanadium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style |
| // license that can be found in the LICENSE file. |
| |
| import 'util.dart' as util; |
| |
| import 'dart:async'; |
| |
| import 'package:sky/services.dart' show embedder; |
| import 'package:ether/syncbase_client.dart' |
| show Perms, SyncbaseClient, SyncbaseNoSqlDatabase, SyncbaseTable; |
| |
| Perms emptyPerms() => new Perms()..json = '{}'; |
| |
| class CroupierClient { |
| final SyncbaseClient _syncbaseClient; |
| |
| CroupierClient() |
| : _syncbaseClient = new SyncbaseClient(embedder.connectToService, |
| 'https://mojo.v.io/syncbase_server.mojo'); |
| |
| // TODO(alexfandrianto): Try not to call this twice at the same time. |
| // That would lead to very race-y behavior. |
| Future<SyncbaseNoSqlDatabase> createDatabase() async { |
| util.log('CroupierClient.createDatabase'); |
| var app = _syncbaseClient.app(util.appName); |
| if (!(await app.exists())) { |
| await app.create(emptyPerms()); |
| } |
| var db = app.noSqlDatabase(util.dbName); |
| if (!(await db.exists())) { |
| await db.create(emptyPerms()); |
| } |
| return db; |
| } |
| |
| // TODO(alexfandrianto): Try not to call this twice at the same time. |
| // That would lead to very race-y behavior. |
| Future<SyncbaseTable> createTable( |
| SyncbaseNoSqlDatabase db, String tableName) async { |
| var table = db.table(tableName); |
| if (!(await table.exists())) { |
| await table.create(emptyPerms()); |
| } |
| util.log('CroupierClient: ${tableName} is ready'); |
| return table; |
| } |
| } |