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

Modeling help request #148

Open
aisflat439 opened this issue Sep 14, 2022 · 4 comments
Open

Modeling help request #148

aisflat439 opened this issue Sep 14, 2022 · 4 comments

Comments

@aisflat439
Copy link
Contributor

Hey Tyler.
I looked high and low for this in the README and in /examples. It seems like it should be straightforward.

I wanted to model the following:
image

Creating the top half of the model was easy. I then applied what I know about creating comments on a post or tickets on a project to addProductToWarehouse but I was immediately stumped. Can you offer some assistance when you have some time? It's not obvious to me how this should work.

https://electrodb.fun/?#code/PQKgBAsg9gJgpgGzARwK5wE4Es4GcA0YuccYGeqCALgUQBYCG5YA7llXWAGbZwB2MXGBDAAUKKwBbAA5QMVMAG8wAUT5V2AT0IBlTADcsAY1IBfbhiiSwAIkRwjVSzABGNgNzijUPrgVUGFwRSAF5bTShUDAB9AKC4aL4GSTgPcTgAD1l5MG9fBQAFZ1RHNQ0qTTAwvjgWVXUtAAowUTAlVrawSVhEAC52zs79TFwsH36bAEYbfA7B-nLNCaLYEqoZuc7iDEMTCbl4DFwNwdNZwYYqJywXVCo8fsVNtulixwBJGEfnzorpOAmfmwfAA5idBp1yGgsOQvmAnOhzhCzj8kilvhDfpp-oDrqDwZioagYXA4Qi4EjTpTOvBcEZsNINOMBpj4diAbYgVh8dS2ijMa9jBynqy2TjbHxUJIXJgCZ1+RDvKh1BjWX8OTZJdLZbywAq+dTufAMg8WYNgMB4XQsEIEDaaGBXqtHLgfm0LWB2AByIRSf4YLgOBS3BRQADWDE0PydMDWuFVArDCdZXBwCDhNmkYblmO8Migo3u-QA2gBdXUGt1EJNmlNpjO4bMVzp52SFjnFzNvKifGzlqumH76zosJhwOiRYgrWMu5ODbwIYKOMZ8Caj8gT1BT7vHZtGzITEGjabNrNziGpxAZo9YSZZnOKqxt9gdmzr8eTuC9-ui4eDRvnoMl7poex6Ng+85PgWL4ll2zo9jAfbNoOmLDihepIoocTBCiACU6RZHICh5H4YAAOpjpuxBlFoVRgDUdQ0RUzQdCKnTdPACDnsMRwrhMJ4-AsWgTBRG6fg+2y7BqBwjHKw6XNcIammxgzvlRX5wipELqriwJgs2RIkmSGCIkOuposKVY6ZyeL6VWhmwv05K6n+YAMDAMDkLg8a1oM1k2FyPL2XA0KOfCJkUmZPySAwSQgpggFihqgV2ah1LDvuJo+VpbRqZ+2VVh6HA2mAdp+EIeVbngLSih63q+jImCBo4YAhmA4aRlWC5Lkyq62JVxC7lWZ6+Re9YTPezZtK20FFmAZbIc2AGjUB42ck2VbTVB7awQNGlIQOUWYnt05xol3VBnx-WUZ+p0uhBnoCAetg3gJoojTlY1XqBt6TZtuTbTB81vjdVXfotVbLZ9q3fS9YEbaKW35jt80-qy6FUps6EKlhgQ4aI+EEdkCgMLgmh8EY3DKsuPi5OQlxwHdVCNBZ-QpYQtL0lgjIrgA-GztlgAAPvRlAIEigomPzovahgwui4uhBKuo0tajKcsi5Ki64bW5BUFEfBgEzTGaAAdPScAM40n0xmsnyAlYcAALSoMSiGEBalBYDAjS4eZySRZinMMr1-TB9zvXCyLNgPpLHJx1HYAAAy6srVD9GnidJ1juGmyCUC+6Ig5E0RblkxTVMU5HFsM6JH5Vdb9EB4Q7meXgQimI8TfokQtktx5Xm4NLKXy1r4uOt2nzD4Lmti3qOtsXrBvkaD1ENBUpsdDX9zW5sreD-0+-t4nMfUhZ1J7fbnKO07UAcJgLtuzMYAel7Pt+x0pi5-nhfFx6AAq1oKpyDDEIEE9MqAAEJRCZGJmXcmlMuDU0jq3CAsUGDxQwI0S+cJ2bdwBClBemwl4YENnXdSJtTaoGkDAK2n0cHpVzsQZmn0YpxQSvgxhecC7KC8rIXwGoGCLkSLUGw88i7iA9O8L01gkGLkqAgAsCgJx1CoFAMAMB1HFXjKIKRrBYr3BgPCdRFtLb3EIG1aR1gGCOFQEIhAlRqG0I0KCXRloyKMAUO8fR6hPRCFwI7YqoJSpYDDHAU2ES3FgC3NyEEVpSC2w+DAQgzD4lgH0EI9AUSoBcH0WJMGRi2AcDcgDZUVAYGERyKTBBlcaaG1bkzf+UByGfmwavDSAs9KEESQhTpsTCCs17npIhgwSGG2NuvM2Ti6HRknsknOptmG72Ou0z4uoPRp36AAai2Qsn++FTBAA

@tywalch
Copy link
Owner

tywalch commented Sep 16, 2022

I can take a look at this more closely tonight 👍

@aisflat439
Copy link
Contributor Author

aisflat439 commented Sep 16, 2022

Thanks in advance! I think what I need is to create a service to manage the join.

@tywalch
Copy link
Owner

tywalch commented Sep 24, 2022

@aisflat439 I checked out your Playground (thank you for doing that btw, it is very helpful) and it looked like the error was that the product entity referenced warehouseId as a composite attribute but warehouseId was not defined in attributes. I changed that, and removed the export keywords (the playground doesn't like those right now) and everything is now running just fine:

https://electrodb.fun/?#code/PQKgBAsg9gJgpgGzARwK5wE4Es4GcA0YuccYGeqCALgUQBYCG5YA7llXWAGbZwB2MXGBDAAUKKwBbAA5QMVMAG8wAUT5V2AT0IBlTADcsAY1IBfbhiiSwAIkRwjVSzABGNgNzijUPrgVUGFwRSAF5bTShUDAB9AKC4aL4GSTgPLx8-MAAFZ1RHNQ0qTTAwvjgWVXUtAAowUTAleoawSVhEAC5G5ub9TFwsH06bAEYbfCbu-kLNIZzYPKoxiebiDEMTIbl4DFwl7tNx7oYqJywXVCo8TsVlhpYmODpI4gBJGGvb5qLpOCG-bD4AHM9t0wAdPtJco43h9QV9ND8-qcgSC4eQ0FhyO8wE50IdQeC4UkUrC4TiEb9bP8sCj8Wi4BisZ1cXA6c1CaD4LgjNhpBpBl0yd9KTZqbTPhzupDjJSbmTyYjbHxUJIXJhUey2Q1vKh1KS4cKhsrVeqtWC2ZKwDT4AAPK6C7rAYA4uhYIQIN00MCQ+aOXCfBpOq1UADkQikPwwXAcCnOCigAGsGJoIVCaPrQdIExm4VwcAhsTYsxq4d4ZFB+pdOgBtAC6Zoalu6uGzDrJecQhZbJdBZdklcp1aLabeNnrAbBErN93IT1QxDmMAWuBzzW8CGCjgGfCGM8ezzgi+XPYa1rgNqGgP6owb3tbcvl3HzhavWGGxdv2qs-fYg5se7nV4YDHW8mxWe8JwaDsC0va9u0-MA+wrX8a2HX0qFHcd5VMKdlhwxt8UUOJgnBABKdJfAUAB1B5ALgAotBKMAygqBiilqJoHwaVp4AQVdeh2bchhvT4pi0IYaNnA8e1WdYRS2PoNUtY5Tjje0uOaACDxhNtukNKlkWBW90VQTE4GxFkzTA4lZQnfTRUMk8yAZUymRxDA8VwuEGBgGByFwFddPhRUHIBIyJxMsyLI81kvNBSQGCSQFMFXBp7LFcK4UtS0zztQKNLuWiD3yicgw4N0wA9PwhC0+c8DqeUg3YMMrRkTBo0cMA4zARNkwnddN35HdbFq4hdlvLNUuaaDCw-SDEO-ZCqzAOtQNvFspqg58-gTJyv3LAdUNGuBMNAuLumOo8-SmgaYyEkairqq6aCc3LYLfJzJqC7oZve99doQpDDpW-9HqAkCJzAhoNu+6bttsV9hng+agZQlasLJfCCQtJoOSIwISNEcjxAYXBND4IxuF1LcfEQ8hjkPNNqhszoMsILkeSwPltwAflZwywAAH2YygEHxaUTD5kWTQwIWRY3QgdXUKXjTVWXheVDdSLbcgqCiPhsjTNjNAAOh5OAGeqArvRHLsrDgABaVBTOAwgnUoLAYGqUizRss0Od5IbOgDrmhqF4WbB7CXKWj8OwAABjNJWqE6ZO4-jvDSJNwEoG90QcJJsmKapimw-NhnJP3OqreY5JWTAHy-LwIRTGuWuSSIQzCEb-zcCljK5c1sWbfQt5+4FjXRbBbWH11-WwErujjZNppy8uK3lh75vOi3gK48jtk-eWY6dNFe2HagDhMCdl2xjAIMPa9n3caznO84LoMABVXRquQEyEQE9MqAAEJRCk3JpTLg1Mw6NwgIlBgyUMDVBPtiNm7dfgZRnssOeGADaLwPMvVA0gYCW2tigi0WdiBUA3nCBKSUUroIodnXOyh-KyF8CKBgG5EjlBsNPfO4ggwvBDNYKBG5igIArAoJ4FQqBQDADAeR5UVyiCEawRKlwYA4nkebC2lxCDdWEdYBgjhUBcIQMUIhJCNBAlUc6KijAFAvHUeoK0QhcD23KkCSqWAExwBNgEuxYB5w0kBC6UgPolzQhgIQKh4SwD6C4egIJUAuDqKknVN4rB2CcAYAtXUVAwFF0gdA7cDdfLPU-lAfB1cUH8zCoQSJCwdKYJ1nAPWuDDboUIcQ0hqZR4xMzibKhNDQTkM+EGZOnQADU0yhlv3IgXbwlF0lVyAkxEMLA6AO2GPHeOIZPDLMyE06JGziEOwAKx7IOSTCpaYqk1OIMgsGJ0YkjyiRhGApF3BAA

Can you verify if this is what you'd expect?

@squio
Copy link

squio commented Nov 17, 2022

Just to chime in ... this is actually very helpful for me getting started with M2M relations, maybe this should be part of the documentation some time?

Also a question: I have almost the same situation BUT need to query on warehouseId to retrieve a single warehouse so I swapped the sk and pk as in this snippet:

const WarehouseEntity = new Entity( 
  // ...
  indexes: {
      warehouses: {
        collection: "warehouses",
        pk: {
          field: "pk",
          composite: ["warehouseId"],
        },
        sk: {
          field: "sk",
          composite: [],
        }
      },
  // ...
});

And then the very basic function:

async function getWarehouse(warehouseId: string) {
  return await WarehouseEntity.get({ warehouseId }).go();
}

Now my question: is this indeed the right approach for this access pattern or doesn't it matter at all?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants