@@ -69,7 +69,7 @@ func (s *Scaffolder) AddType(addTypeOptions AddTypeOption, moduleName string, st
6969	}
7070
7171	// Parse provided field 
72- 	tFields , err  :=  parseFields (fields )
72+ 	tFields , err  :=  parseFields (fields ,  isForbiddenTypeField )
7373	if  err  !=  nil  {
7474		return  err 
7575	}
@@ -131,7 +131,7 @@ func (s *Scaffolder) AddType(addTypeOptions AddTypeOption, moduleName string, st
131131}
132132
133133// parseFields parses the provided fields, analyses the types and checks there is no duplicated field 
134- func  parseFields (fields  []string ) ([]typed.Field , error ) {
134+ func  parseFields (fields  []string ,  isForbiddenField   func ( string )  bool ) ([]typed.Field , error ) {
135135	// Used to check duplicated field 
136136	existingFields  :=  make (map [string ]bool )
137137
@@ -141,7 +141,7 @@ func parseFields(fields []string) ([]typed.Field, error) {
141141		name  :=  fs [0 ]
142142
143143		// Ensure the field name is not a Go reserved name, it would generate an incorrect code 
144- 		if  isGoReservedWord (name ) {
144+ 		if  isForbiddenField (name ) {
145145			return  tFields , fmt .Errorf ("%s can't be used as a field name" , name )
146146		}
147147
@@ -222,6 +222,19 @@ func isMsgServerDefined(appPath, moduleName string) (bool, error) {
222222	return  true , err 
223223}
224224
225+ // isForbiddenTypeField returns true if the name is forbidden as a field name 
226+ func  isForbiddenTypeField (name  string ) bool  {
227+ 	switch  name  {
228+ 	case 
229+ 		"id" ,
230+ 		"index" ,
231+ 		"creator" :
232+ 		return  true 
233+ 	}
234+ 
235+ 	return  isGoReservedWord (name )
236+ }
237+ 
225238func  isGoReservedWord (name  string ) bool  {
226239	// Check keyword or literal 
227240	if  token .Lookup (name ).IsKeyword () {
0 commit comments