code: func (tl TypeLoader) LoadColumns(args *ArgType, typeTpl *Type) error {
  	var err error
  
  	// load columns
  	columnList, err := tl.ColumnList(args.DB, args.Schema, typeTpl.Table.TableName)
  	if err != nil {
  		return err
  	}
  
  	// process columns
  	for _, c := range columnList {
  		ignore := false
  
  		for _, ignoreField := range args.IgnoreFields {
  			if ignoreField == c.ColumnName {
  				// Skip adding this field if user has specified they are not
  				// interested.
  				//
  				// This could be useful for fields which are managed by the
  				// database (e.g. automatically updated timestamps) instead of
  				// via Go code.
  				ignore = true
  			}
  		}
  
  		if ignore {
  			continue
  		}
  
  		// set col info
  		f := &Field{
  			Name: snaker.SnakeToCamelIdentifier(c.ColumnName),
  			Col:  c,
  		}
  		f.Len, f.NilType, f.Type = tl.ParseType(args, c.DataType, !c.NotNull)
  
  		// set primary key
  		if c.IsPrimaryKey {
  			typeTpl.PrimaryKeyFields = append(typeTpl.PrimaryKeyFields, f)
  			// This is retained for backward compatibility in the templates.
  			typeTpl.PrimaryKey = f
  		}
  
  		// append col to template fields
  		typeTpl.Fields = append(typeTpl.Fields, f)
  	}
  
  	return nil
  }
docs: // LoadColumns loads schema table/view columns.