Add attribute DEFAULT '' to the CREAT, ALTER constructors
This commit is contained in:
		
							parent
							
								
									e4988b714e
								
							
						
					
					
						commit
						4cae7af3f9
					
				| @ -104,7 +104,11 @@ func getColumnAddQuery(al *alias, fi *fieldInfo) string { | ||||
| 		typ += " " + "NOT NULL" | ||||
| 	} | ||||
| 
 | ||||
| 	return fmt.Sprintf("ALTER TABLE %s%s%s ADD COLUMN %s%s%s %s", Q, fi.mi.table, Q, Q, fi.column, Q, typ) | ||||
| 	return fmt.Sprintf("ALTER TABLE %s%s%s ADD COLUMN %s%s%s %s %s",  | ||||
| 		Q, fi.mi.table, Q,  | ||||
| 		Q, fi.column, Q,  | ||||
| 		typ, getColumnDefault(fi), | ||||
| 	) | ||||
| } | ||||
| 
 | ||||
| // create database creation string. | ||||
| @ -156,6 +160,9 @@ func getDbCreateSql(al *alias) (sqls []string, tableIndexes map[string][]dbIndex | ||||
| 				//	column += " DEFAULT " + fi.initial.String() | ||||
| 				//} | ||||
| 				 | ||||
| 				// Append attribute DEFAULT | ||||
| 				column += getColumnDefault(fi) | ||||
| 
 | ||||
| 				if fi.unique { | ||||
| 					column += " " + "UNIQUE" | ||||
| 				} | ||||
| @ -239,3 +246,42 @@ func getDbCreateSql(al *alias) (sqls []string, tableIndexes map[string][]dbIndex | ||||
| 
 | ||||
| 	return | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| // Get string value for the attribute "DEFAULT" for the CREATE, ALTER commands | ||||
| func getColumnDefault(fi *fieldInfo) string { | ||||
| 	var ( | ||||
| 		v, t, d        string | ||||
| 	) | ||||
| 	 | ||||
| 	t = " DEFAULT '%s' " | ||||
| 
 | ||||
| 	// These defaults will be useful if there no config value orm:"default" and NOT NULL is on | ||||
| 	switch fieldType { | ||||
| 		case TypeDateField: | ||||
| 			d = "0000-00-00" | ||||
| 			 | ||||
| 		case TypeDateTimeField: | ||||
| 			d = "0000-00-00 00:00:00" | ||||
| 	 | ||||
| 		case TypeBooleanField, TypeBitField, TypeSmallIntegerField, TypeIntegerField, | ||||
| 		TypeBigIntegerField, TypePositiveBitField, TypePositiveSmallIntegerField,  | ||||
| 		TypePositiveIntegerField, TypePositiveBigIntegerField, TypeFloatField: | ||||
| 		TypeDecimalField: | ||||
| 			d = "0" | ||||
| 	} | ||||
| 	 | ||||
| 	if fi.colDefault { | ||||
| 		if !fi.initial.Exist() { | ||||
| 			v = fmt.Strintf(t, "") | ||||
| 		} else { | ||||
| 			v = fmt.Strintf(t, fi.initial.String()) | ||||
| 		} | ||||
| 	} else { | ||||
| 		if !fi.null { | ||||
| 			v = fmt.Strintf(t, d) | ||||
| 		} | ||||
| 	} | ||||
| 	 | ||||
| 	return v | ||||
| } | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user