create method
- CreateSessionRequest request,
- String database,
- {String $fields}
Creates a new session. A session can be used to perform transactions that
read and/or modify data in a Cloud Spanner database. Sessions are meant to
be reused for many consecutive transactions. Sessions can only execute one
transaction at a time. To execute multiple concurrent
read-write/write-only transactions, create multiple sessions. Note that
standalone reads and queries use a transaction internally, and count
toward the one transaction limit. Active sessions use additional server
resources, so it is a good idea to delete idle and unneeded sessions.
Aside from explicit deletes, Cloud Spanner may delete sessions for which
no operations are sent for more than an hour. If a session is deleted,
requests to it return NOT_FOUND
. Idle sessions can be kept alive by
sending a trivial SQL query periodically, e.g., "SELECT 1"
.
request
- The metadata request object.
Request parameters:
database
- Required. The database in which the new session is created.
Value must have pattern
"^projects/^/
+/instances/^/
+/databases/^/
+$".
$fields
- Selector specifying which fields to include in a partial
response.
Completes with a Session.
Completes with a commons.ApiRequestError if the API endpoint returned an error.
If the used http.Client
completes with an error when making a REST call,
this method will complete with the same error.
Implementation
async.Future<Session> create(
CreateSessionRequest request, core.String database,
{core.String $fields}) {
var _url;
var _queryParams = new core.Map<core.String, core.List<core.String>>();
var _uploadMedia;
var _uploadOptions;
var _downloadOptions = commons.DownloadOptions.Metadata;
var _body;
if (request != null) {
_body = convert.json.encode((request).toJson());
}
if (database == null) {
throw new core.ArgumentError("Parameter database is required.");
}
if ($fields != null) {
_queryParams["fields"] = [$fields];
}
_url = 'v1/' +
commons.Escaper.ecapeVariableReserved('$database') +
'/sessions';
var _response = _requester.request(_url, "POST",
body: _body,
queryParams: _queryParams,
uploadOptions: _uploadOptions,
uploadMedia: _uploadMedia,
downloadOptions: _downloadOptions);
return _response.then((data) => new Session.fromJson(data));
}