restuwahyu13 / go-clean-architecture

Example go clean architecture folder pattern
127 stars 40 forks source link

model depends on external package #3

Open sinkevichmm opened 2 years ago

sinkevichmm commented 2 years ago

Hello! Why does your model have a dependency like "gorm.io/gorm". you will be forced to change the model if:

  1. the database provider will change (for example, from gorm to gopg)
  2. database type will change (mysql to mongodb) I think a method like BeforeCreate should be inside the repo in an implementation specific internal structure.
restuwahyu13 commented 2 years ago

Because gorm.io/gorm is orm database and i use gorm orm for my application for interaction with database, beforeCreate is method from gorm this is hooks, check gorm documentation for more information about hooks, maybe next time, i will change gorm to gopg.

sinkevichmm commented 2 years ago

Untitled Diagram drawio

Of course i understand for what beforeCreate) In this case ModelStudent or ModelAuth is a business entity and "gorm.io/gorm" is a detail subject to change. Now you model depends on the detail. Do you agree?

restuwahyu13 commented 2 years ago

yes correct