Is there a sea-orm equivalent to findOrCreate? How else would I do this?
Is there a sea-orm equivalent to findOrCreate? How else would I do this?
in sequelize (javascript) it's pretty straightforward to either find a record, or create it if it doesn't exist. I don't see anything similar with sea-orm. There's a 'save' method that seems to insert or update, but I need to know details about the record ahead of time :/
Any ideas?
https://sequelize.org/docs/v6/core-concepts/model-querying-finders/
I managed to get this working, but there has to be a better way. How else could I write this?
I have never used sea-orm, but I wonder if
.on_conflict
could be used to simplify the code above?This is likely what OP will have to do. It actually looks like ANSI SQL now has merge, but you can scroll down a bit and see how each DB handles it slightly differently if you don't use merge.
I think I had that in a few attempts, I can't remember why I removed it. Thanks for pointing this out.
I would likely do it in reverse. Try and find the object and if it doesn't exist create it.
That will always be prune to race conditions, where you check if someting exists (then some other thread creates it) and then you try to create it. You should always try to create first, then if it fails due to it already existing, fetch it. That is a good general rule for anything from hashmaps to databases.