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

Clarification on Relationship Generation in sea-orm-cli Based on ForeignKey Constraints #2216

Open
Ethan1225 opened this issue May 8, 2024 · 0 comments

Comments

@Ethan1225
Copy link

Hello sea-orm team,

I am encountering a situation where the sea-orm-cli generate entity command generates different relationship annotations based on how the foreign key constraints are specified in the SQLite schema. Specifically, there seems to be a difference in behavior when the UNIQUE keyword is used.

Here's a detailed example using two tables, Authors and Books, to illustrate my point:

Schema Definition

CREATE TABLE Authors (
    ID INTEGER PRIMARY KEY AUTOINCREMENT,
    name TEXT NOT NULL
);

CREATE TABLE Books (
    ID INTEGER PRIMARY KEY AUTOINCREMENT,
    authorID INTEGER,
    title TEXT NOT NULL,
    FOREIGN KEY (authorID) REFERENCES Authors(ID)
);

CREATE UNIQUE INDEX idx_books_author ON Books (authorID);

With this schema, I expect that the relationship generated should indicate a one-to-one relationship (has_one) between Authors and Books due to the unique index on Books.authorID. However, the behavior seems inconsistent depending on the placement and usage of UNIQUE constraints directly in the table definition versus the creation of a unique index separately.

Could you please clarify the following:

How does sea-orm-cli generate entity determine when to generate #[sea_orm(has_one = "related_entity")] vs #[sea_orm(has_many = "related_entity")]?
Is there a recommended way of defining foreign keys and unique constraints in the schema to ensure consistent relationship generation?
Any guidance or clarification on this matter would be greatly appreciated.

Thank you for your assistance!

##Versions
├── sea-orm v0.12.14
│ ├── sea-orm-macros v0.12.14 (proc-macro)
│ │ ├── sea-bae v0.2.0 (proc-macro)
│ ├── sea-query v0.30.7
│ │ ├── sea-query-derive v0.4.1 (proc-macro)
│ ├── sea-query-binder v0.5.0
│ │ ├── sea-query v0.30.7 ()
├── sea-query v0.30.7 (
)
│ ├── sea-orm v0.12.14 ()
│ ├── sea-query v0.30.7 (
)

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

1 participant