Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Replace dataset id with project in datastore #1330

Merged
merged 15 commits into from
Jan 14, 2016
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Replace Query.dataset_id -> project in datastore.
  • Loading branch information
dhermes committed Jan 7, 2016
commit 4f99d0fec28e1c13bfd20c7ec0146872cb95bbc6
4 changes: 2 additions & 2 deletions gcloud/datastore/batch.py
Original file line number Diff line number Diff line change
Expand Up @@ -167,7 +167,7 @@ def put(self, entity):
:param entity: the entity to be saved.

:raises: ValueError if entity has no key assigned, or if the key's
``dataset_id`` does not match ours.
``project`` does not match ours.
"""
if entity.key is None:
raise ValueError("Entity must have a key")
Expand All @@ -190,7 +190,7 @@ def delete(self, key):
:param key: the key to be deleted.

:raises: ValueError if key is not complete, or if the key's
``dataset_id`` does not match ours.
``project`` does not match ours.
"""
if key.is_partial:
raise ValueError("Key must be complete")
Expand Down
20 changes: 10 additions & 10 deletions gcloud/datastore/query.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,9 +34,9 @@ class Query(object):
:type kind: string
:param kind: The kind to query.

:type dataset_id: string
:param dataset_id: The ID of the dataset to query. If not passed,
uses the client's value.
:type project: string
:param project: The project associated with the query. If not passed,
uses the client's value.

:type namespace: string or None
:param namespace: The namespace to which to restrict results. If not
Expand All @@ -59,7 +59,7 @@ class Query(object):
:type group_by: sequence of string
:param group_by: field names used to group query results.

:raises: ValueError if ``dataset_id`` is not passed and no implicit
:raises: ValueError if ``project`` is not passed and no implicit
default is set.
"""

Expand All @@ -75,7 +75,7 @@ class Query(object):
def __init__(self,
client,
kind=None,
dataset_id=None,
project=None,
namespace=None,
ancestor=None,
filters=(),
Expand All @@ -85,7 +85,7 @@ def __init__(self,

self._client = client
self._kind = kind
self._dataset_id = dataset_id or client.dataset_id
self._project = project or client.project
self._namespace = namespace or client.namespace
self._ancestor = ancestor
self._filters = []
Expand All @@ -97,12 +97,12 @@ def __init__(self,
self._group_by = _ensure_tuple_or_list('group_by', group_by)

@property
def dataset_id(self):
"""Get the dataset ID for this Query.
def project(self):
"""Get the project for this Query.

:rtype: str
"""
return self._dataset_id or self._client.dataset_id
return self._project or self._client.project

@property
def namespace(self):
Expand Down Expand Up @@ -404,7 +404,7 @@ def next_page(self):

query_results = self._client.connection.run_query(
query_pb=pb,
dataset_id=self._query.dataset_id,
dataset_id=self._query.project,
namespace=self._query.namespace,
transaction_id=transaction and transaction.id,
)
Expand Down
66 changes: 33 additions & 33 deletions gcloud/datastore/test_query.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@

class TestQuery(unittest2.TestCase):

_DATASET = 'DATASET'
_PROJECT = 'PROJECT'

def _getTargetClass(self):
from gcloud.datastore.query import Query
Expand All @@ -29,13 +29,13 @@ def _makeOne(self, *args, **kw):
def _makeClient(self, connection=None):
if connection is None:
connection = _Connection()
return _Client(self._DATASET, connection)
return _Client(self._PROJECT, connection)

def test_ctor_defaults(self):
client = self._makeClient()
query = self._makeOne(client)
self.assertTrue(query._client is client)
self.assertEqual(query.dataset_id, client.dataset_id)
self.assertEqual(query.project, client.project)
self.assertEqual(query.kind, None)
self.assertEqual(query.namespace, client.namespace)
self.assertEqual(query.ancestor, None)
Expand All @@ -46,19 +46,19 @@ def test_ctor_defaults(self):

def test_ctor_explicit(self):
from gcloud.datastore.key import Key
_DATASET = 'OTHER_DATASET'
_PROJECT = 'OTHER_PROJECT'
_KIND = 'KIND'
_NAMESPACE = 'OTHER_NAMESPACE'
client = self._makeClient()
ancestor = Key('ANCESTOR', 123, project=_DATASET)
ancestor = Key('ANCESTOR', 123, project=_PROJECT)
FILTERS = [('foo', '=', 'Qux'), ('bar', '<', 17)]
PROJECTION = ['foo', 'bar', 'baz']
ORDER = ['foo', 'bar']
GROUP_BY = ['foo']
query = self._makeOne(
client,
kind=_KIND,
dataset_id=_DATASET,
project=_PROJECT,
namespace=_NAMESPACE,
ancestor=ancestor,
filters=FILTERS,
Expand All @@ -67,7 +67,7 @@ def test_ctor_explicit(self):
group_by=GROUP_BY,
)
self.assertTrue(query._client is client)
self.assertEqual(query.dataset_id, _DATASET)
self.assertEqual(query.project, _PROJECT)
self.assertEqual(query.kind, _KIND)
self.assertEqual(query.namespace, _NAMESPACE)
self.assertEqual(query.ancestor.path, ancestor.path)
Expand Down Expand Up @@ -130,7 +130,7 @@ def test_kind_setter_w_existing(self):
query = self._makeOne(self._makeClient(), kind=_KIND_BEFORE)
self.assertEqual(query.kind, _KIND_BEFORE)
query.kind = _KIND_AFTER
self.assertEqual(query.dataset_id, self._DATASET)
self.assertEqual(query.project, self._PROJECT)
self.assertEqual(query.kind, _KIND_AFTER)

def test_ancestor_setter_w_non_key(self):
Expand All @@ -145,15 +145,15 @@ def _assign(val):
def test_ancestor_setter_w_key(self):
from gcloud.datastore.key import Key
_NAME = u'NAME'
key = Key('KIND', 123, project=self._DATASET)
key = Key('KIND', 123, project=self._PROJECT)
query = self._makeOne(self._makeClient())
query.add_filter('name', '=', _NAME)
query.ancestor = key
self.assertEqual(query.ancestor.path, key.path)

def test_ancestor_deleter_w_key(self):
from gcloud.datastore.key import Key
key = Key('KIND', 123, project=self._DATASET)
key = Key('KIND', 123, project=self._PROJECT)
query = self._makeOne(client=self._makeClient(), ancestor=key)
del query.ancestor
self.assertTrue(query.ancestor is None)
Expand Down Expand Up @@ -200,13 +200,13 @@ def test_add_filter_w_whitespace_property_name(self):
def test_add_filter___key__valid_key(self):
from gcloud.datastore.key import Key
query = self._makeOne(self._makeClient())
key = Key('Foo', project=self._DATASET)
key = Key('Foo', project=self._PROJECT)
query.add_filter('__key__', '=', key)
self.assertEqual(query.filters, [('__key__', '=', key)])

def test_filter___key__not_equal_operator(self):
from gcloud.datastore.key import Key
key = Key('Foo', project=self._DATASET)
key = Key('Foo', project=self._PROJECT)
query = self._makeOne(self._makeClient())
query.add_filter('__key__', '<', key)
self.assertEqual(query.filters, [('__key__', '<', key)])
Expand Down Expand Up @@ -311,7 +311,7 @@ def test_fetch_w_explicit_client(self):


class TestIterator(unittest2.TestCase):
_DATASET = 'DATASET'
_PROJECT = 'PROJECT'
_NAMESPACE = 'NAMESPACE'
_KIND = 'KIND'
_ID = 123
Expand All @@ -334,7 +334,7 @@ def _addQueryResults(self, connection, cursor=_END, more=False):
NO_MORE = query_pb2.QueryResultBatch.MORE_RESULTS_AFTER_LIMIT
_ID = 123
entity_pb = entity_pb2.Entity()
entity_pb.key.partition_id.dataset_id = self._DATASET
entity_pb.key.partition_id.dataset_id = self._PROJECT
path_element = entity_pb.key.path_element.add()
path_element.kind = self._KIND
path_element.id = _ID
Expand All @@ -346,7 +346,7 @@ def _addQueryResults(self, connection, cursor=_END, more=False):
def _makeClient(self, connection=None):
if connection is None:
connection = _Connection()
return _Client(self._DATASET, connection)
return _Client(self._PROJECT, connection)

def test_ctor_defaults(self):
connection = _Connection()
Expand All @@ -368,7 +368,7 @@ def test_next_page_no_cursors_no_more(self):
from gcloud.datastore.query import _pb_from_query
connection = _Connection()
client = self._makeClient(connection)
query = _Query(client, self._KIND, self._DATASET, self._NAMESPACE)
query = _Query(client, self._KIND, self._PROJECT, self._NAMESPACE)
self._addQueryResults(connection, cursor=b'')
iterator = self._makeOne(query, client)
entities, more_results, cursor = iterator.next_page()
Expand All @@ -383,7 +383,7 @@ def test_next_page_no_cursors_no_more(self):
qpb = _pb_from_query(query)
qpb.offset = 0
EXPECTED = {
'dataset_id': self._DATASET,
'dataset_id': self._PROJECT,
'query_pb': qpb,
'namespace': self._NAMESPACE,
'transaction_id': None,
Expand All @@ -394,7 +394,7 @@ def test_next_page_no_cursors_no_more_w_offset_and_limit(self):
from gcloud.datastore.query import _pb_from_query
connection = _Connection()
client = self._makeClient(connection)
query = _Query(client, self._KIND, self._DATASET, self._NAMESPACE)
query = _Query(client, self._KIND, self._PROJECT, self._NAMESPACE)
self._addQueryResults(connection, cursor=b'')
iterator = self._makeOne(query, client, 13, 29)
entities, more_results, cursor = iterator.next_page()
Expand All @@ -410,7 +410,7 @@ def test_next_page_no_cursors_no_more_w_offset_and_limit(self):
qpb.limit = 13
qpb.offset = 29
EXPECTED = {
'dataset_id': self._DATASET,
'dataset_id': self._PROJECT,
'query_pb': qpb,
'namespace': self._NAMESPACE,
'transaction_id': None,
Expand All @@ -423,7 +423,7 @@ def test_next_page_w_cursors_w_more(self):
from gcloud.datastore.query import _pb_from_query
connection = _Connection()
client = self._makeClient(connection)
query = _Query(client, self._KIND, self._DATASET, self._NAMESPACE)
query = _Query(client, self._KIND, self._PROJECT, self._NAMESPACE)
self._addQueryResults(connection, cursor=self._END, more=True)
iterator = self._makeOne(query, client)
iterator._start_cursor = self._START
Expand All @@ -444,7 +444,7 @@ def test_next_page_w_cursors_w_more(self):
qpb.start_cursor = urlsafe_b64decode(self._START)
qpb.end_cursor = urlsafe_b64decode(self._END)
EXPECTED = {
'dataset_id': self._DATASET,
'dataset_id': self._PROJECT,
'query_pb': qpb,
'namespace': self._NAMESPACE,
'transaction_id': None,
Expand All @@ -454,7 +454,7 @@ def test_next_page_w_cursors_w_more(self):
def test_next_page_w_cursors_w_bogus_more(self):
connection = _Connection()
client = self._makeClient(connection)
query = _Query(client, self._KIND, self._DATASET, self._NAMESPACE)
query = _Query(client, self._KIND, self._PROJECT, self._NAMESPACE)
self._addQueryResults(connection, cursor=self._END, more=True)
epb, cursor, _ = connection._results.pop()
connection._results.append((epb, cursor, 4)) # invalid enum
Expand All @@ -465,7 +465,7 @@ def test___iter___no_more(self):
from gcloud.datastore.query import _pb_from_query
connection = _Connection()
client = self._makeClient(connection)
query = _Query(client, self._KIND, self._DATASET, self._NAMESPACE)
query = _Query(client, self._KIND, self._PROJECT, self._NAMESPACE)
self._addQueryResults(connection)
iterator = self._makeOne(query, client)
entities = list(iterator)
Expand All @@ -478,7 +478,7 @@ def test___iter___no_more(self):
qpb = _pb_from_query(query)
qpb.offset = 0
EXPECTED = {
'dataset_id': self._DATASET,
'dataset_id': self._PROJECT,
'query_pb': qpb,
'namespace': self._NAMESPACE,
'transaction_id': None,
Expand All @@ -489,7 +489,7 @@ def test___iter___w_more(self):
from gcloud.datastore.query import _pb_from_query
connection = _Connection()
client = self._makeClient(connection)
query = _Query(client, self._KIND, self._DATASET, self._NAMESPACE)
query = _Query(client, self._KIND, self._PROJECT, self._NAMESPACE)
self._addQueryResults(connection, cursor=self._END, more=True)
self._addQueryResults(connection)
iterator = self._makeOne(query, client)
Expand All @@ -508,13 +508,13 @@ def test___iter___w_more(self):
qpb2.offset = 0
qpb2.start_cursor = self._END
EXPECTED1 = {
'dataset_id': self._DATASET,
'dataset_id': self._PROJECT,
'query_pb': qpb1,
'namespace': self._NAMESPACE,
'transaction_id': None,
}
EXPECTED2 = {
'dataset_id': self._DATASET,
'dataset_id': self._PROJECT,
'query_pb': qpb2,
'namespace': self._NAMESPACE,
'transaction_id': None,
Expand Down Expand Up @@ -561,7 +561,7 @@ def test_ancestor(self):
from gcloud.datastore.helpers import _prepare_key_for_request
from gcloud.datastore._generated import query_pb2

ancestor = Key('Ancestor', 123, project='DATASET')
ancestor = Key('Ancestor', 123, project='PROJECT')
pb = self._callFUT(_Query(ancestor=ancestor))
cfilter = pb.filter.composite_filter
self.assertEqual(cfilter.operator, query_pb2.CompositeFilter.AND)
Expand Down Expand Up @@ -591,7 +591,7 @@ def test_filter_key(self):
from gcloud.datastore.helpers import _prepare_key_for_request
from gcloud.datastore._generated import query_pb2

key = Key('Kind', 123, project='DATASET')
key = Key('Kind', 123, project='PROJECT')
query = _Query(filters=[('__key__', '=', key)])
query.OPERATORS = {
'=': query_pb2.PropertyFilter.EQUAL,
Expand Down Expand Up @@ -627,7 +627,7 @@ class _Query(object):
def __init__(self,
client=object(),
kind=None,
dataset_id=None,
project=None,
namespace=None,
ancestor=None,
filters=(),
Expand All @@ -636,7 +636,7 @@ def __init__(self,
group_by=()):
self._client = client
self.kind = kind
self.dataset_id = dataset_id
self.project = project
self.namespace = namespace
self.ancestor = ancestor
self.filters = filters
Expand All @@ -663,8 +663,8 @@ def run_query(self, **kw):

class _Client(object):

def __init__(self, dataset_id, connection, namespace=None):
self.dataset_id = dataset_id
def __init__(self, project, connection, namespace=None):
self.project = project
self.connection = connection
self.namespace = namespace

Expand Down