{"action":"created","issue":{"url":"https://api.github.com/repos/domain-query-language/dql-server/issues/165","repository_url":"https://api.github.com/repos/domain-query-language/dql-server","labels_url":"https://api.github.com/repos/domain-query-language/dql-server/issues/165/labels{/name}","comments_url":"https://api.github.com/repos/domain-query-language/dql-server/issues/165/comments","events_url":"https://api.github.com/repos/domain-query-language/dql-server/issues/165/events","html_url":"https://github.com/domain-query-language/dql-server/issues/165","id":159389051,"number":165,"title":"Problem: Interpreter is getting cluttered","user":{"login":"barryosull","id":325820,"avatar_url":"https://avatars.githubusercontent.com/u/325820?v=3","gravatar_id":"","url":"https://api.github.com/users/barryosull","html_url":"https://github.com/barryosull","followers_url":"https://api.github.com/users/barryosull/followers","following_url":"https://api.github.com/users/barryosull/following{/other_user}","gists_url":"https://api.github.com/users/barryosull/gists{/gist_id}","starred_url":"https://api.github.com/users/barryosull/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/barryosull/subscriptions","organizations_url":"https://api.github.com/users/barryosull/orgs","repos_url":"https://api.github.com/users/barryosull/repos","events_url":"https://api.github.com/users/barryosull/events{/privacy}","received_events_url":"https://api.github.com/users/barryosull/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":3,"created_at":"2016-06-09T11:48:44Z","updated_at":"2016-06-20T12:33:42Z","closed_at":null,"body":"**Solution:** Split the interpreter into multiple, mini interpreters\r\n**SuccessCriteria:** Code is restructued into new, inter connected modules. Tests continue to pass.\r\n\r\nThe first step is figuring out where the lines should be drawn. Thankfully we've already done part of this work in with issue #161.\r\n\r\nEach of the below structures have their own syntax that's self contained, so realistically these could be split into independent parsers and interpreters that are then glued together via interfaces.\r\n\r\n**Validation**\r\n- Scalar\r\n- Structure\r\n\r\nOther systems will make calls to this system\r\n\r\n**Querying**\r\n- Structure\r\n- Tables\r\n\r\n**Modification**\r\nModifications to the root entity, replacing values/entities in the tree\r\n\r\n**Composition**\r\nMostly the command handler, it composes components together to perform operations"},"comment":{"url":"https://api.github.com/repos/domain-query-language/dql-server/issues/comments/227129387","html_url":"https://github.com/domain-query-language/dql-server/issues/165#issuecomment-227129387","issue_url":"https://api.github.com/repos/domain-query-language/dql-server/issues/165","id":227129387,"user":{"login":"barryosull","id":325820,"avatar_url":"https://avatars.githubusercontent.com/u/325820?v=3","gravatar_id":"","url":"https://api.github.com/users/barryosull","html_url":"https://github.com/barryosull","followers_url":"https://api.github.com/users/barryosull/followers","following_url":"https://api.github.com/users/barryosull/following{/other_user}","gists_url":"https://api.github.com/users/barryosull/gists{/gist_id}","starred_url":"https://api.github.com/users/barryosull/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/barryosull/subscriptions","organizations_url":"https://api.github.com/users/barryosull/orgs","repos_url":"https://api.github.com/users/barryosull/repos","events_url":"https://api.github.com/users/barryosull/events{/privacy}","received_events_url":"https://api.github.com/users/barryosull/received_events","type":"User","site_admin":false},"created_at":"2016-06-20T12:33:42Z","updated_at":"2016-06-20T12:33:42Z","body":"The Update SQL interpreter does belong to the Modification concept, but the projection side hasn't been fleshed out enough to move it properly. There are a couple of concepts at play here moving it now may make future changes more difficult.\r\n\r\nEg. The query and modification systems will be called in different places, under different contexts. They may need to be extracted into their own infrastructure implementation for projections, leaving the original code in place. Tricky."}}
{"actor":{"display_login":"barryosull"}}