func expandGitlabUsersOptions()

in internal/provider/sdk/data_source_gitlab_users.go [332:433]


func expandGitlabUsersOptions(d *schema.ResourceData) (*gitlab.ListUsersOptions, int, error) {
	listUsersOptions := &gitlab.ListUsersOptions{}
	listUsersOptions.PerPage = 20
	listUsersOptions.Page = 1
	var optionsHash strings.Builder

	if data, ok := d.GetOk("order_by"); ok {
		orderBy := data.(string)
		listUsersOptions.OrderBy = &orderBy
		optionsHash.WriteString(orderBy)
	}
	optionsHash.WriteString(",")
	if data, ok := d.GetOk("sort"); ok {
		sort := data.(string)
		listUsersOptions.Sort = &sort
		optionsHash.WriteString(sort)
	}
	optionsHash.WriteString(",")
	if data, ok := d.GetOk("username"); ok {
		username := data.(string)
		listUsersOptions.Username = &username
		optionsHash.WriteString(username)
	}
	optionsHash.WriteString(",")
	if data, ok := d.GetOk("search"); ok {
		search := data.(string)
		listUsersOptions.Search = &search
		optionsHash.WriteString(search)
	}
	optionsHash.WriteString(",")
	if data, ok := d.GetOk("active"); ok {
		active := data.(bool)
		listUsersOptions.Active = &active
		optionsHash.WriteString(strconv.FormatBool(active))
	}
	optionsHash.WriteString(",")
	if data, ok := d.GetOk("external"); ok {
		external := data.(bool)
		listUsersOptions.External = &external
		optionsHash.WriteString(strconv.FormatBool(external))
	}
	optionsHash.WriteString(",")
	if data, ok := d.GetOk("blocked"); ok {
		blocked := data.(bool)
		listUsersOptions.Blocked = &blocked
		optionsHash.WriteString(strconv.FormatBool(blocked))
	}
	optionsHash.WriteString(",")
	if data, ok := d.GetOk("extern_uid"); ok {
		externalUID := data.(string)
		listUsersOptions.ExternalUID = &externalUID
		optionsHash.WriteString(externalUID)
	}
	optionsHash.WriteString(",")
	if data, ok := d.GetOk("extern_provider"); ok {
		provider := data.(string)
		listUsersOptions.Provider = &provider
		optionsHash.WriteString(provider)
	}
	optionsHash.WriteString(",")
	if data, ok := d.GetOk("created_before"); ok {
		createdBefore := data.(string)
		date, err := time.Parse("2006-01-02", createdBefore)
		if err != nil {
			return nil, 0, fmt.Errorf("created_before must be in yyyy-mm-dd format")
		}
		listUsersOptions.CreatedBefore = &date
		optionsHash.WriteString(createdBefore)
	}
	optionsHash.WriteString(",")
	if data, ok := d.GetOk("created_after"); ok {
		createdAfter := data.(string)
		date, err := time.Parse("2006-01-02", createdAfter)
		if err != nil {
			return nil, 0, fmt.Errorf("created_after must be in yyyy-mm-dd format")
		}
		listUsersOptions.CreatedAfter = &date
		optionsHash.WriteString(createdAfter)
	}
	optionsHash.WriteString(",")
	if data, ok := d.GetOk("exclude_external"); ok {
		excludeExternal := data.(bool)
		listUsersOptions.ExcludeExternal = &excludeExternal
		optionsHash.WriteString(strconv.FormatBool(excludeExternal))
	}
	optionsHash.WriteString(",")
	if data, ok := d.GetOk("exclude_internal"); ok {
		excludeInternal := data.(bool)
		listUsersOptions.ExcludeInternal = &excludeInternal
		optionsHash.WriteString(strconv.FormatBool(excludeInternal))
	}
	optionsHash.WriteString(",")
	if data, ok := d.GetOk("without_project_bots"); ok {
		withoutProjectBots := data.(bool)
		listUsersOptions.WithoutProjectBots = &withoutProjectBots
		optionsHash.WriteString(strconv.FormatBool(withoutProjectBots))
	}

	id := schema.HashString(optionsHash.String())

	return listUsersOptions, id, nil
}