yesodweb/persistent

Foreign key constraint name is weird

Ouverte

#1 124 ouverte le 15 sept. 2020

 (2 commentaires) (0 réaction) (0 personne assignée)Haskell (302 forks)auto 404
good first issue

Métriques du dépôt

Stars
 (484 étoiles)
Métriques de merge PR
 (Métriques PR en attente)

Description

Hello,

I am unsure if this is intentional - in which case this is a request for improvement - or not - in which case this is a bug report.

The foreign key constraint name is weird: it seems that the (mandatory) constraint name passed in the quasi quoter is appended with no separator (e.g. _) to the FK table name.

FYI I use:

  • Stack with resolver lts-16.5, so Persistent 2.10.5.2 and Persistent Template 2.8.2.3
  • PostgreSQL 11.8

To reproduce:

share
  [mkPersist sqlSettings, mkMigrate "migrateAll"]
  [persistLowerCase|
  FooBar
      foo String
      bar Bool
      Primary foo bar
      deriving Show
  FooBarBaz
      foo String
      bar Bool
      baz Int
      Primary foo bar baz
      Foreign FooBar fk_something foo bar
      deriving Show
|]

The foreign key constraint is named foo_bar_bazfk_something, i.e. it appends the table name foo_bar_baz to the provided QQ name fk_something with no separator.

While I don't mind being forced to prefix with the table name foo_bar_baz, I don't understand why there isn't at least a separator _ between the table name and the given suffix (so it would be foo_bar_baz_fk_something). And it's illegal (doesn't compile) to write Foreign FooBar _fk_something foo bar.

What do you think?

Cheers!

Guide contributeur