MCPcopy
hub / github.com/go-gorm/gorm / SelectAndOmitColumns

Method SelectAndOmitColumns

statement.go:715–772  ·  statement.go::Statement.SelectAndOmitColumns

SelectAndOmitColumns get select and omit columns, select -> true, omit -> false

(requireCreate, requireUpdate bool)

Source from the content-addressed store, hash-verified

713
714// SelectAndOmitColumns get select and omit columns, select -> true, omit -> false
715func (stmt *Statement) SelectAndOmitColumns(requireCreate, requireUpdate bool) (map[string]bool, bool) {
716 results := map[string]bool{}
717 notRestricted := false
718
719 processColumn := func(column string, result bool) {
720 if stmt.Schema == nil {
721 results[column] = result
722 } else if column == "*" {
723 notRestricted = result
724 for _, dbName := range stmt.Schema.DBNames {
725 results[dbName] = result
726 }
727 } else if column == clause.Associations {
728 for _, rel := range stmt.Schema.Relationships.Relations {
729 results[rel.Name] = result
730 }
731 } else if field := stmt.Schema.LookUpField(column); field != nil && field.DBName != "" {
732 results[field.DBName] = result
733 } else if table, col := matchName(column); col != "" && (table == stmt.Table || table == "") {
734 if col == "*" {
735 for _, dbName := range stmt.Schema.DBNames {
736 results[dbName] = result
737 }
738 } else {
739 results[col] = result
740 }
741 } else {
742 results[column] = result
743 }
744 }
745
746 // select columns
747 for _, column := range stmt.Selects {
748 processColumn(column, true)
749 }
750
751 // omit columns
752 for _, column := range stmt.Omits {
753 processColumn(column, false)
754 }
755
756 if stmt.Schema != nil {
757 for _, field := range stmt.Schema.FieldsByName {
758 name := field.DBName
759 if name == "" {
760 name = field.Name
761 }
762
763 if requireCreate && !field.Creatable {
764 results[name] = false
765 } else if requireUpdate && !field.Updatable {
766 results[name] = false
767 }
768 }
769 }
770
771 return results, !notRestricted && len(stmt.Selects) > 0
772}

Callers 10

ChangedMethod · 0.95
BuildQuerySQLFunction · 0.95
saveAssociationMethod · 0.80
SaveBeforeAssociationsFunction · 0.80
SaveAfterAssociationsFunction · 0.80
ConvertToAssignmentsFunction · 0.80
DeleteBeforeAssociationsFunction · 0.80
ConvertToCreateValuesFunction · 0.80

Calls 1

LookUpFieldMethod · 0.80

Tested by

no test coverage detected