{"action":"created","issue":{"url":"https://api.github.com/repos/Azure/durabletask/issues/200","repository_url":"https://api.github.com/repos/Azure/durabletask","labels_url":"https://api.github.com/repos/Azure/durabletask/issues/200/labels{/name}","comments_url":"https://api.github.com/repos/Azure/durabletask/issues/200/comments","events_url":"https://api.github.com/repos/Azure/durabletask/issues/200/events","html_url":"https://github.com/Azure/durabletask/pull/200","id":346077732,"node_id":"MDExOlB1bGxSZXF1ZXN0MjA1MDI3NTYw","number":200,"title":"Enabling conditional query","user":{"login":"TsuyoshiUshio","id":1390976,"node_id":"MDQ6VXNlcjEzOTA5NzY=","avatar_url":"https://avatars0.githubusercontent.com/u/1390976?v=4","gravatar_id":"","url":"https://api.github.com/users/TsuyoshiUshio","html_url":"https://github.com/TsuyoshiUshio","followers_url":"https://api.github.com/users/TsuyoshiUshio/followers","following_url":"https://api.github.com/users/TsuyoshiUshio/following{/other_user}","gists_url":"https://api.github.com/users/TsuyoshiUshio/gists{/gist_id}","starred_url":"https://api.github.com/users/TsuyoshiUshio/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/TsuyoshiUshio/subscriptions","organizations_url":"https://api.github.com/users/TsuyoshiUshio/orgs","repos_url":"https://api.github.com/users/TsuyoshiUshio/repos","events_url":"https://api.github.com/users/TsuyoshiUshio/events{/privacy}","received_events_url":"https://api.github.com/users/TsuyoshiUshio/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":14,"created_at":"2018-07-31T08:02:03Z","updated_at":"2018-08-09T22:11:35Z","closed_at":null,"author_association":"NONE","pull_request":{"url":"https://api.github.com/repos/Azure/durabletask/pulls/200","html_url":"https://github.com/Azure/durabletask/pull/200","diff_url":"https://github.com/Azure/durabletask/pull/200.diff","patch_url":"https://github.com/Azure/durabletask/pull/200.patch"},"body":"Hi @cgillum \r\n\r\nThis PR is related this issue. I open this PR to start conversation. \r\n\r\nhttps://github.com/Azure/azure-functions-durable-extension/issues/358\r\n\r\nI'd like to discuss some architecture decision.  Please review the initial idea and feel free to give me comments. \r\n\r\n#  Query parameter object \r\n\r\nI'd like to create a query object which represent the query parameter. I create OrchestrationInstanceStatusQueryBuilder for this purpose. I have several ideas however, I should talk with you before I implement whole.  If you prefer other implementation, please let me know.\r\n\r\n## 1. Builder vs Query object\r\n\r\nNow I'm implementing as a builder. However, I also can implement as Query object which has property of parameter with GetQuery() method to return TableQuery<OrchestrationInstanceStatus>. Both is OK for me. However, you seems hide OrchestrationInstanceStatus from public, then, we need to create a QueryParameter class in DurableTask.Core namespace which you want to avoid to change. \r\nI also can implement Parse method to the builder to enable to parse the query parameter object, however, since I'm not sure if I can  create the parameter object in DurableTask.Core, I postpone the decision. \r\n\r\nOr do you have any other cool idea for querying? \r\n\r\nIMO, creating query object  or build could gain the testability and feel safe to handle complex condition generation by a unit test. \r\n\r\n## 2. OrchestrationInstanceStatusQueryBuilder:  public TableQuery<T> Build<T>()  method\r\n\r\nThis method is only used for TableQuery<OrchestrationInstanceStatus> as T. However, If I make it `public TableQuery<OrchestrationInstanceStatus> Build()` method, it requires make OrchestrationInstanceStatus to public. However, I want to keep testability of this class. Do you have any other good idea?\r\n\r\n## 3. scope of the class\r\n\r\nI need to public a class for query parameter object. It should be in the DurableTask.Core however, maybe, we might start without changing DurableTask.Core. In this case, where should the query parameter class(currently, OrchestrationStatusQueryBuilder) sits? I mean namespace and directory. \r\nLooks good?\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n"},"comment":{"url":"https://api.github.com/repos/Azure/durabletask/issues/comments/411914438","html_url":"https://github.com/Azure/durabletask/pull/200#issuecomment-411914438","issue_url":"https://api.github.com/repos/Azure/durabletask/issues/200","id":411914438,"node_id":"MDEyOklzc3VlQ29tbWVudDQxMTkxNDQzOA==","user":{"login":"cgillum","id":2704139,"node_id":"MDQ6VXNlcjI3MDQxMzk=","avatar_url":"https://avatars2.githubusercontent.com/u/2704139?v=4","gravatar_id":"","url":"https://api.github.com/users/cgillum","html_url":"https://github.com/cgillum","followers_url":"https://api.github.com/users/cgillum/followers","following_url":"https://api.github.com/users/cgillum/following{/other_user}","gists_url":"https://api.github.com/users/cgillum/gists{/gist_id}","starred_url":"https://api.github.com/users/cgillum/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cgillum/subscriptions","organizations_url":"https://api.github.com/users/cgillum/orgs","repos_url":"https://api.github.com/users/cgillum/repos","events_url":"https://api.github.com/users/cgillum/events{/privacy}","received_events_url":"https://api.github.com/users/cgillum/received_events","type":"User","site_admin":false},"created_at":"2018-08-09T22:11:35Z","updated_at":"2018-08-09T22:11:35Z","author_association":"COLLABORATOR","body":"Also, we just merged Catherine's changes today, so you will probably need to resolve any conflicts this created in your PR."}}
{"actor":{"display_login":"cgillum"}}