{"action":"created","issue":{"url":"https://api.github.com/repos/matthiasbeyer/imag/issues/485","repository_url":"https://api.github.com/repos/matthiasbeyer/imag","labels_url":"https://api.github.com/repos/matthiasbeyer/imag/issues/485/labels{/name}","comments_url":"https://api.github.com/repos/matthiasbeyer/imag/issues/485/comments","events_url":"https://api.github.com/repos/matthiasbeyer/imag/issues/485/events","html_url":"https://github.com/matthiasbeyer/imag/issues/485","id":162876796,"number":485,"title":"StoreId: Store-internal/Store-external confusion","user":{"login":"matthiasbeyer","id":427866,"avatar_url":"https://avatars.githubusercontent.com/u/427866?v=3","gravatar_id":"","url":"https://api.github.com/users/matthiasbeyer","html_url":"https://github.com/matthiasbeyer","followers_url":"https://api.github.com/users/matthiasbeyer/followers","following_url":"https://api.github.com/users/matthiasbeyer/following{/other_user}","gists_url":"https://api.github.com/users/matthiasbeyer/gists{/gist_id}","starred_url":"https://api.github.com/users/matthiasbeyer/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/matthiasbeyer/subscriptions","organizations_url":"https://api.github.com/users/matthiasbeyer/orgs","repos_url":"https://api.github.com/users/matthiasbeyer/repos","events_url":"https://api.github.com/users/matthiasbeyer/events{/privacy}","received_events_url":"https://api.github.com/users/matthiasbeyer/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/matthiasbeyer/imag/labels/complexity/high","name":"complexity/high","color":"5319e7"},{"url":"https://api.github.com/repos/matthiasbeyer/imag/labels/kind/enhancement","name":"kind/enhancement","color":"eb6420"},{"url":"https://api.github.com/repos/matthiasbeyer/imag/labels/kind/infrastructure","name":"kind/infrastructure","color":"eb6420"},{"url":"https://api.github.com/repos/matthiasbeyer/imag/labels/kind/refactor","name":"kind/refactor","color":"eb6420"},{"url":"https://api.github.com/repos/matthiasbeyer/imag/labels/meta/importance/high","name":"meta/importance/high","color":"d4c5f9"},{"url":"https://api.github.com/repos/matthiasbeyer/imag/labels/meta/WIP","name":"meta/WIP","color":"d4c5f9"},{"url":"https://api.github.com/repos/matthiasbeyer/imag/labels/part/lib/imagstore","name":"part/lib/imagstore","color":"006b75"}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":4,"created_at":"2016-06-29T09:12:12Z","updated_at":"2016-07-03T11:38:47Z","closed_at":null,"body":"At the moment we `Store::storify_id()` each `StoreId` object once it enters a `Store` function.\r\nThis alters the `StoreId` object and is not really nice (it really creates a new `StoreId` object which than gets passed around).\r\n\r\nWe should reimplement this and differ between internal and external `StoreId` objects, meaning that \r\n\r\n* external `StoreId` objects are for the interface to the `Store`\r\n* internal `StoreId` objects are basically `StoreId` objects _including_ the `Store` path in them.\r\n\r\nWe should make them seperate types (`libimagstore`-private ones), so we can be sure that we do not accidentially pass these internal data types (with the full path from the FS root to the store entry) to the user of the library (who should only use the external types, having the path root at the store path).\r\n\r\n---\r\n\r\nI consider this a non-breaking change, as we do not alter the `libimagstore` interface if we do things right. It might be a little complex to get it right, though.\r\n\r\n---\r\n\r\nIf anyone wants to implement this, go ahead. I would gladly answer questions.\r\n\r\n"},"comment":{"url":"https://api.github.com/repos/matthiasbeyer/imag/issues/comments/230148978","html_url":"https://github.com/matthiasbeyer/imag/issues/485#issuecomment-230148978","issue_url":"https://api.github.com/repos/matthiasbeyer/imag/issues/485","id":230148978,"user":{"login":"matthiasbeyer","id":427866,"avatar_url":"https://avatars.githubusercontent.com/u/427866?v=3","gravatar_id":"","url":"https://api.github.com/users/matthiasbeyer","html_url":"https://github.com/matthiasbeyer","followers_url":"https://api.github.com/users/matthiasbeyer/followers","following_url":"https://api.github.com/users/matthiasbeyer/following{/other_user}","gists_url":"https://api.github.com/users/matthiasbeyer/gists{/gist_id}","starred_url":"https://api.github.com/users/matthiasbeyer/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/matthiasbeyer/subscriptions","organizations_url":"https://api.github.com/users/matthiasbeyer/orgs","repos_url":"https://api.github.com/users/matthiasbeyer/repos","events_url":"https://api.github.com/users/matthiasbeyer/events{/privacy}","received_events_url":"https://api.github.com/users/matthiasbeyer/received_events","type":"User","site_admin":false},"created_at":"2016-07-03T11:38:47Z","updated_at":"2016-07-03T11:38:47Z","body":"The problem is, though, that the `ModuleEntryPath` needs the `From` implementation on `StoreId`. Bah, I guess this gets ugly..."}}
{"actor":{"display_login":"matthiasbeyer"}}