agronholm / agronholm/sqlacodegen

SQLModel does not generate many-to-many classes correctly

Ouverte
#405 8 commentaires 3 réactions 1 personne assignée Réclamée par @sheinbergon Voir sur GitHub
bug
Langage dominant
Python
Étoiles
2.4k
Forks
284
Merge moyen
2 j 1 h
PR mergées (30 j)
1

Description

### Things to check first

- [x] I have searched the existing issues and didn't find my bug already reported there

- [x] I have checked that my bug is still present in the latest release

### Sqlacodegen version

3.0.0

### SQLAlchemy version

2.0.38

### RDBMS vendor

PostgreSQL

### What happened?

Ran the command
```
sqlacodegen postgresql://postgres:postgres@localhost:5432/sentimental --generator sqlmodels --outfile data_pipelines/lib/models/pg_ext_sqlm.py
```
All tables generated correctly but the many-to-many class was not correct. The base metaclass was missing after the first parmeter **property_lead_link**.
```
t_property_lead_link = Table(
'property_lead_link', ,
Column('property_lead_id', Integer, primary_key=True, nullable=False),
Column('lead_link_id', Integer, primary_key=True, nullable=False),
ForeignKeyConstraint(['lead_link_id'], ['property_link.id'], name='fk_property_lead_link_link'),
ForeignKeyConstraint(['property_lead_id'], ['property_lead.id'], name='fk_property_lead_link_lead'),
PrimaryKeyConstraint('property_lead_id', 'lead_link_id', name='pk_property_lead_link')
)
```

### Database schema for reproducing the bug

```
CREATE TABLE public.property_lead (
id serial NOT NULL,
created_at timestamp with time zone NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at timestamp with time zone NOT NULL DEFAULT CURRENT_TIMESTAMP,
);

ALTER TABLE public.property_lead ADD CONSTRAINT pk_property_leads PRIMARY KEY (id);

CREATE TABLE public.property_link (
id serial NOT NULL,
created_at timestamp with time zone NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at timestamp with time zone NOT NULL DEFAULT CURRENT_TIMESTAMP,
);

ALTER TABLE public.property_link ADD CONSTRAINT pk_lead_links PRIMARY KEY (id);

CREATE TABLE public.property_lead_link (
property_lead_id integer NOT NULL,
lead_link_id integer NOT NULL
);

ALTER TABLE public.property_lead_link ADD CONSTRAINT pk_property_lead_link PRIMARY KEY (property_lead_id, lead_link_id);
ALTER TABLE public.property_lead_link ADD CONSTRAINT fk_property_lead_link_lead FOREIGN KEY (property_lead_id) REFERENCES public.property_lead(id);
ALTER TABLE public.property_lead_link ADD CONSTRAINT fk_property_lead_link_link FOREIGN KEY (lead_link_id) REFERENCES public.property_link(id);
```

Guide de contribution

Ouvrir le guide de contribution

Évaluation

Cette issue n'a pas encore été évaluée.

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.