Alors, tout d’abord, il y a une petite chose qui m’interpelle, c’est que ta méthode GetGroups() semble faire appel à une variable var dbengine *gorm.DB globale plutôt que de l’accepter en argument.
Bon, en soi c’est pas la mort, mais en ce qui me concerne je préfère que les méthodes acceptent ce *gorm.DB en premier argument, notamment parce que cela permet de les faire fonctionner avec ou sans transaction. Mais soit. C’est un micro-truc, et si ça se trouve ça ne posera jamais de problème dans ton application.
Effectivement, il faudrait que je vois pour l’ajouter dans mon context
pour y avoir accès depuis mes fonctions API, mais il me semble que ça me force un peu à me trimballer une variable partout, raison pour laquelle j’en avais fais une variable globale.
Je vais analyser et essayer d’implémenter ton code quand j’aurai un peu de temps.
d’appliquer automatiquement mes migrations pour que ma base soit bien configurée dans la toute dernière version du schéma,
Pour ce point justement, qu’utilises-tu pour les migrations ?
Car actuellement, j’ai un truc assez sale du genre (mais qui fonctionne pour du développement):
func DbMigrate(){
dbengine.AutoMigrate(&User{})
dbengine.AutoMigrate(&Project{}).
AddForeignKey("user_id", "projects(id)", "RESTRICT", "RESTRICT")
dbengine.AutoMigrate(&Group{}).
AddForeignKey("user_id", "users(id)", "RESTRICT", "RESTRICT").
AddForeignKey("project_id", "projects(id)", "RESTRICT", "RESTRICT")
dbengine.AutoMigrate(&Task{}).
AddForeignKey("group_id", "groups(id)", "RESTRICT", "RESTRICT")
dbengine.AutoMigrate(&File{}).
AddForeignKey("task_id", "tasks(id)", "RESTRICT", "RESTRICT")
dbengine.AutoMigrate(&Color{})
dbengine.AutoMigrate(&Tag{}).
AddForeignKey("color_id", "colors(id)", "RESTRICT", "RESTRICT")
}
Pour me familiariser avec ça, j’ai un peu pris référence sur le code de gitea
. Pour leur migrations, ils ont, comme je peux le voir, développer leur propre système (https://github.com/go-gitea/gitea/tree/master/models/migrations).
Sais-tu s’il y a un outil qui fait ça pour nous ? (un peu comme laravel qui permet de créer modèle, migrations, etc. et de les appliquer ensuite)
Dans tous les cas, merci pour tes explications !