gitee.com/larksuite/oapi-sdk-go/v3@v3.0.3/service/search/v2/model.go (about)

     1  // Package search code generated by oapi sdk gen
     2  /*
     3   * MIT License
     4   *
     5   * Copyright (c) 2022 Lark Technologies Pte. Ltd.
     6   *
     7   * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
     8   *
     9   * The above copyright notice and this permission notice, shall be included in all copies or substantial portions of the Software.
    10   *
    11   * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
    12   */
    13  
    14  package larksearch
    15  
    16  import (
    17  	"fmt"
    18  
    19  	"context"
    20  	"errors"
    21  
    22  	"gitee.com/larksuite/oapi-sdk-go/v3/core"
    23  )
    24  
    25  const (
    26  	StateOnline  = 0 // 已上线
    27  	StateOffline = 1 // 未上线
    28  
    29  )
    30  
    31  const (
    32  	ViewFULL  = 0 // 全量数据
    33  	ViewBASIC = 1 // 摘要数据
    34  
    35  )
    36  
    37  const (
    38  	StatePatchDataSourceOnline  = 0 // 已上线
    39  	StatePatchDataSourceOffline = 1 // 未上线
    40  
    41  )
    42  
    43  type Acl struct {
    44  	Access *string `json:"access,omitempty"` // 权限类型,优先级:Deny > Allow。
    45  	Value  *string `json:"value,omitempty"`  // 设置的权限值,例如 userID ,依赖 type 描述。;;**注**:在 type 为 user 且 access 为 allow 时,可填 "everyone" 来表示该数据项对全员可见;
    46  	Type   *string `json:"type,omitempty"`   // 权限值类型
    47  }
    48  
    49  type AclBuilder struct {
    50  	access     string // 权限类型,优先级:Deny > Allow。
    51  	accessFlag bool
    52  	value      string // 设置的权限值,例如 userID ,依赖 type 描述。;;**注**:在 type 为 user 且 access 为 allow 时,可填 "everyone" 来表示该数据项对全员可见;
    53  	valueFlag  bool
    54  	type_      string // 权限值类型
    55  	typeFlag   bool
    56  }
    57  
    58  func NewAclBuilder() *AclBuilder {
    59  	builder := &AclBuilder{}
    60  	return builder
    61  }
    62  
    63  // 权限类型,优先级:Deny > Allow。
    64  //
    65  // 示例值:allow
    66  func (builder *AclBuilder) Access(access string) *AclBuilder {
    67  	builder.access = access
    68  	builder.accessFlag = true
    69  	return builder
    70  }
    71  
    72  // 设置的权限值,例如 userID ,依赖 type 描述。;;**注**:在 type 为 user 且 access 为 allow 时,可填 "everyone" 来表示该数据项对全员可见;
    73  //
    74  // 示例值:d35e3c23
    75  func (builder *AclBuilder) Value(value string) *AclBuilder {
    76  	builder.value = value
    77  	builder.valueFlag = true
    78  	return builder
    79  }
    80  
    81  // 权限值类型
    82  //
    83  // 示例值:user
    84  func (builder *AclBuilder) Type(type_ string) *AclBuilder {
    85  	builder.type_ = type_
    86  	builder.typeFlag = true
    87  	return builder
    88  }
    89  
    90  func (builder *AclBuilder) Build() *Acl {
    91  	req := &Acl{}
    92  	if builder.accessFlag {
    93  		req.Access = &builder.access
    94  
    95  	}
    96  	if builder.valueFlag {
    97  		req.Value = &builder.value
    98  
    99  	}
   100  	if builder.typeFlag {
   101  		req.Type = &builder.type_
   102  
   103  	}
   104  	return req
   105  }
   106  
   107  type BatchItemResult struct {
   108  	ItemId    *string `json:"item_id,omitempty"`    // 数据项ID,对应一条索引数据的ID
   109  	IsSuccess *bool   `json:"is_success,omitempty"` // 判断单条数据是否成功
   110  	Err       *string `json:"err,omitempty"`        // 如果单条数据失败,表示单条数据的错误信息;如果单条数据成功被索引,则err是空字符串
   111  }
   112  
   113  type BatchItemResultBuilder struct {
   114  	itemId        string // 数据项ID,对应一条索引数据的ID
   115  	itemIdFlag    bool
   116  	isSuccess     bool // 判断单条数据是否成功
   117  	isSuccessFlag bool
   118  	err           string // 如果单条数据失败,表示单条数据的错误信息;如果单条数据成功被索引,则err是空字符串
   119  	errFlag       bool
   120  }
   121  
   122  func NewBatchItemResultBuilder() *BatchItemResultBuilder {
   123  	builder := &BatchItemResultBuilder{}
   124  	return builder
   125  }
   126  
   127  // 数据项ID,对应一条索引数据的ID
   128  //
   129  // 示例值:
   130  func (builder *BatchItemResultBuilder) ItemId(itemId string) *BatchItemResultBuilder {
   131  	builder.itemId = itemId
   132  	builder.itemIdFlag = true
   133  	return builder
   134  }
   135  
   136  // 判断单条数据是否成功
   137  //
   138  // 示例值:
   139  func (builder *BatchItemResultBuilder) IsSuccess(isSuccess bool) *BatchItemResultBuilder {
   140  	builder.isSuccess = isSuccess
   141  	builder.isSuccessFlag = true
   142  	return builder
   143  }
   144  
   145  // 如果单条数据失败,表示单条数据的错误信息;如果单条数据成功被索引,则err是空字符串
   146  //
   147  // 示例值:
   148  func (builder *BatchItemResultBuilder) Err(err string) *BatchItemResultBuilder {
   149  	builder.err = err
   150  	builder.errFlag = true
   151  	return builder
   152  }
   153  
   154  func (builder *BatchItemResultBuilder) Build() *BatchItemResult {
   155  	req := &BatchItemResult{}
   156  	if builder.itemIdFlag {
   157  		req.ItemId = &builder.itemId
   158  
   159  	}
   160  	if builder.isSuccessFlag {
   161  		req.IsSuccess = &builder.isSuccess
   162  
   163  	}
   164  	if builder.errFlag {
   165  		req.Err = &builder.err
   166  
   167  	}
   168  	return req
   169  }
   170  
   171  type ConnectDataSource struct {
   172  	ServiceUrl         *string `json:"service_url,omitempty"`         // 要托管的服务API地址,例如https://open.feishu.cn/xxxx/xxxx
   173  	ProjectName        *string `json:"project_name,omitempty"`        // 项目地址,只能包含小写字母,如bytedance_test
   174  	DisplayName        *string `json:"display_name,omitempty"`        // datasource名称,会展示在飞书搜索分类按钮(searchTab)中,如:公司wiki
   175  	Description        *string `json:"description,omitempty"`         // 描述datasource
   176  	IconUrl            *string `json:"icon_url,omitempty"`            // 图标
   177  	ProjectDescription *string `json:"project_description,omitempty"` // 托管api的描述
   178  	ContactEmail       *string `json:"contact_email,omitempty"`       // 联系人邮箱,开发人员的邮箱,用于托管API的SLA(Service Level Agreement)问题沟通
   179  	TenantName         *string `json:"tenant_name,omitempty"`         // 创建api的组织名称,对企业开发者来说,建议使用企业名称
   180  }
   181  
   182  type ConnectDataSourceBuilder struct {
   183  	serviceUrl             string // 要托管的服务API地址,例如https://open.feishu.cn/xxxx/xxxx
   184  	serviceUrlFlag         bool
   185  	projectName            string // 项目地址,只能包含小写字母,如bytedance_test
   186  	projectNameFlag        bool
   187  	displayName            string // datasource名称,会展示在飞书搜索分类按钮(searchTab)中,如:公司wiki
   188  	displayNameFlag        bool
   189  	description            string // 描述datasource
   190  	descriptionFlag        bool
   191  	iconUrl                string // 图标
   192  	iconUrlFlag            bool
   193  	projectDescription     string // 托管api的描述
   194  	projectDescriptionFlag bool
   195  	contactEmail           string // 联系人邮箱,开发人员的邮箱,用于托管API的SLA(Service Level Agreement)问题沟通
   196  	contactEmailFlag       bool
   197  	tenantName             string // 创建api的组织名称,对企业开发者来说,建议使用企业名称
   198  	tenantNameFlag         bool
   199  }
   200  
   201  func NewConnectDataSourceBuilder() *ConnectDataSourceBuilder {
   202  	builder := &ConnectDataSourceBuilder{}
   203  	return builder
   204  }
   205  
   206  // 要托管的服务API地址,例如https://open.feishu.cn/xxxx/xxxx
   207  //
   208  // 示例值:
   209  func (builder *ConnectDataSourceBuilder) ServiceUrl(serviceUrl string) *ConnectDataSourceBuilder {
   210  	builder.serviceUrl = serviceUrl
   211  	builder.serviceUrlFlag = true
   212  	return builder
   213  }
   214  
   215  // 项目地址,只能包含小写字母,如bytedance_test
   216  //
   217  // 示例值:
   218  func (builder *ConnectDataSourceBuilder) ProjectName(projectName string) *ConnectDataSourceBuilder {
   219  	builder.projectName = projectName
   220  	builder.projectNameFlag = true
   221  	return builder
   222  }
   223  
   224  // datasource名称,会展示在飞书搜索分类按钮(searchTab)中,如:公司wiki
   225  //
   226  // 示例值:
   227  func (builder *ConnectDataSourceBuilder) DisplayName(displayName string) *ConnectDataSourceBuilder {
   228  	builder.displayName = displayName
   229  	builder.displayNameFlag = true
   230  	return builder
   231  }
   232  
   233  // 描述datasource
   234  //
   235  // 示例值:
   236  func (builder *ConnectDataSourceBuilder) Description(description string) *ConnectDataSourceBuilder {
   237  	builder.description = description
   238  	builder.descriptionFlag = true
   239  	return builder
   240  }
   241  
   242  // 图标
   243  //
   244  // 示例值:
   245  func (builder *ConnectDataSourceBuilder) IconUrl(iconUrl string) *ConnectDataSourceBuilder {
   246  	builder.iconUrl = iconUrl
   247  	builder.iconUrlFlag = true
   248  	return builder
   249  }
   250  
   251  // 托管api的描述
   252  //
   253  // 示例值:
   254  func (builder *ConnectDataSourceBuilder) ProjectDescription(projectDescription string) *ConnectDataSourceBuilder {
   255  	builder.projectDescription = projectDescription
   256  	builder.projectDescriptionFlag = true
   257  	return builder
   258  }
   259  
   260  // 联系人邮箱,开发人员的邮箱,用于托管API的SLA(Service Level Agreement)问题沟通
   261  //
   262  // 示例值:
   263  func (builder *ConnectDataSourceBuilder) ContactEmail(contactEmail string) *ConnectDataSourceBuilder {
   264  	builder.contactEmail = contactEmail
   265  	builder.contactEmailFlag = true
   266  	return builder
   267  }
   268  
   269  // 创建api的组织名称,对企业开发者来说,建议使用企业名称
   270  //
   271  // 示例值:
   272  func (builder *ConnectDataSourceBuilder) TenantName(tenantName string) *ConnectDataSourceBuilder {
   273  	builder.tenantName = tenantName
   274  	builder.tenantNameFlag = true
   275  	return builder
   276  }
   277  
   278  func (builder *ConnectDataSourceBuilder) Build() *ConnectDataSource {
   279  	req := &ConnectDataSource{}
   280  	if builder.serviceUrlFlag {
   281  		req.ServiceUrl = &builder.serviceUrl
   282  
   283  	}
   284  	if builder.projectNameFlag {
   285  		req.ProjectName = &builder.projectName
   286  
   287  	}
   288  	if builder.displayNameFlag {
   289  		req.DisplayName = &builder.displayName
   290  
   291  	}
   292  	if builder.descriptionFlag {
   293  		req.Description = &builder.description
   294  
   295  	}
   296  	if builder.iconUrlFlag {
   297  		req.IconUrl = &builder.iconUrl
   298  
   299  	}
   300  	if builder.projectDescriptionFlag {
   301  		req.ProjectDescription = &builder.projectDescription
   302  
   303  	}
   304  	if builder.contactEmailFlag {
   305  		req.ContactEmail = &builder.contactEmail
   306  
   307  	}
   308  	if builder.tenantNameFlag {
   309  		req.TenantName = &builder.tenantName
   310  
   311  	}
   312  	return req
   313  }
   314  
   315  type DataSource struct {
   316  	Id               *string   `json:"id,omitempty"`                // 数据源的唯一标识
   317  	Name             *string   `json:"name,omitempty"`              // data_source的展示名称
   318  	State            *int      `json:"state,omitempty"`             // 数据源状态,0-已上线,1-未上线
   319  	Description      *string   `json:"description,omitempty"`       // 对于数据源的描述
   320  	CreateTime       *string   `json:"create_time,omitempty"`       // 创建时间,使用Unix时间戳,单位为“秒”
   321  	UpdateTime       *string   `json:"update_time,omitempty"`       // 更新时间,使用Unix时间戳,单位为“秒”
   322  	IsExceedQuota    *bool     `json:"is_exceed_quota,omitempty"`   // 是否超限
   323  	IconUrl          *string   `json:"icon_url,omitempty"`          // 数据源在 search tab 上的展示图标路径
   324  	Template         *string   `json:"template,omitempty"`          // 数据源采用的展示模版名称
   325  	SearchableFields []string  `json:"searchable_fields,omitempty"` // 描述哪些字段可以被搜索
   326  	I18nName         *I18nMeta `json:"i18n_name,omitempty"`         // 数据源的国际化展示名称
   327  	I18nDescription  *I18nMeta `json:"i18n_description,omitempty"`  // 数据源的国际化描述
   328  	SchemaId         *string   `json:"schema_id,omitempty"`         // 数据源关联的 schema 标识
   329  }
   330  
   331  type DataSourceBuilder struct {
   332  	id                   string // 数据源的唯一标识
   333  	idFlag               bool
   334  	name                 string // data_source的展示名称
   335  	nameFlag             bool
   336  	state                int // 数据源状态,0-已上线,1-未上线
   337  	stateFlag            bool
   338  	description          string // 对于数据源的描述
   339  	descriptionFlag      bool
   340  	createTime           string // 创建时间,使用Unix时间戳,单位为“秒”
   341  	createTimeFlag       bool
   342  	updateTime           string // 更新时间,使用Unix时间戳,单位为“秒”
   343  	updateTimeFlag       bool
   344  	isExceedQuota        bool // 是否超限
   345  	isExceedQuotaFlag    bool
   346  	iconUrl              string // 数据源在 search tab 上的展示图标路径
   347  	iconUrlFlag          bool
   348  	template             string // 数据源采用的展示模版名称
   349  	templateFlag         bool
   350  	searchableFields     []string // 描述哪些字段可以被搜索
   351  	searchableFieldsFlag bool
   352  	i18nName             *I18nMeta // 数据源的国际化展示名称
   353  	i18nNameFlag         bool
   354  	i18nDescription      *I18nMeta // 数据源的国际化描述
   355  	i18nDescriptionFlag  bool
   356  	schemaId             string // 数据源关联的 schema 标识
   357  	schemaIdFlag         bool
   358  }
   359  
   360  func NewDataSourceBuilder() *DataSourceBuilder {
   361  	builder := &DataSourceBuilder{}
   362  	return builder
   363  }
   364  
   365  // 数据源的唯一标识
   366  //
   367  // 示例值:5577006791947779410
   368  func (builder *DataSourceBuilder) Id(id string) *DataSourceBuilder {
   369  	builder.id = id
   370  	builder.idFlag = true
   371  	return builder
   372  }
   373  
   374  // data_source的展示名称
   375  //
   376  // 示例值:客服工单
   377  func (builder *DataSourceBuilder) Name(name string) *DataSourceBuilder {
   378  	builder.name = name
   379  	builder.nameFlag = true
   380  	return builder
   381  }
   382  
   383  // 数据源状态,0-已上线,1-未上线
   384  //
   385  // 示例值:0
   386  func (builder *DataSourceBuilder) State(state int) *DataSourceBuilder {
   387  	builder.state = state
   388  	builder.stateFlag = true
   389  	return builder
   390  }
   391  
   392  // 对于数据源的描述
   393  //
   394  // 示例值:搜索客服工单数据
   395  func (builder *DataSourceBuilder) Description(description string) *DataSourceBuilder {
   396  	builder.description = description
   397  	builder.descriptionFlag = true
   398  	return builder
   399  }
   400  
   401  // 创建时间,使用Unix时间戳,单位为“秒”
   402  //
   403  // 示例值:
   404  func (builder *DataSourceBuilder) CreateTime(createTime string) *DataSourceBuilder {
   405  	builder.createTime = createTime
   406  	builder.createTimeFlag = true
   407  	return builder
   408  }
   409  
   410  // 更新时间,使用Unix时间戳,单位为“秒”
   411  //
   412  // 示例值:
   413  func (builder *DataSourceBuilder) UpdateTime(updateTime string) *DataSourceBuilder {
   414  	builder.updateTime = updateTime
   415  	builder.updateTimeFlag = true
   416  	return builder
   417  }
   418  
   419  // 是否超限
   420  //
   421  // 示例值:
   422  func (builder *DataSourceBuilder) IsExceedQuota(isExceedQuota bool) *DataSourceBuilder {
   423  	builder.isExceedQuota = isExceedQuota
   424  	builder.isExceedQuotaFlag = true
   425  	return builder
   426  }
   427  
   428  // 数据源在 search tab 上的展示图标路径
   429  //
   430  // 示例值:https://www.xxx.com/open.jpg
   431  func (builder *DataSourceBuilder) IconUrl(iconUrl string) *DataSourceBuilder {
   432  	builder.iconUrl = iconUrl
   433  	builder.iconUrlFlag = true
   434  	return builder
   435  }
   436  
   437  // 数据源采用的展示模版名称
   438  //
   439  // 示例值:search_common_card
   440  func (builder *DataSourceBuilder) Template(template string) *DataSourceBuilder {
   441  	builder.template = template
   442  	builder.templateFlag = true
   443  	return builder
   444  }
   445  
   446  // 描述哪些字段可以被搜索
   447  //
   448  // 示例值:["field1", "field2"](不推荐使用,如果有定制搜索需求,请用 schema 接口)
   449  func (builder *DataSourceBuilder) SearchableFields(searchableFields []string) *DataSourceBuilder {
   450  	builder.searchableFields = searchableFields
   451  	builder.searchableFieldsFlag = true
   452  	return builder
   453  }
   454  
   455  // 数据源的国际化展示名称
   456  //
   457  // 示例值:
   458  func (builder *DataSourceBuilder) I18nName(i18nName *I18nMeta) *DataSourceBuilder {
   459  	builder.i18nName = i18nName
   460  	builder.i18nNameFlag = true
   461  	return builder
   462  }
   463  
   464  // 数据源的国际化描述
   465  //
   466  // 示例值:
   467  func (builder *DataSourceBuilder) I18nDescription(i18nDescription *I18nMeta) *DataSourceBuilder {
   468  	builder.i18nDescription = i18nDescription
   469  	builder.i18nDescriptionFlag = true
   470  	return builder
   471  }
   472  
   473  // 数据源关联的 schema 标识
   474  //
   475  // 示例值:custom_schema
   476  func (builder *DataSourceBuilder) SchemaId(schemaId string) *DataSourceBuilder {
   477  	builder.schemaId = schemaId
   478  	builder.schemaIdFlag = true
   479  	return builder
   480  }
   481  
   482  func (builder *DataSourceBuilder) Build() *DataSource {
   483  	req := &DataSource{}
   484  	if builder.idFlag {
   485  		req.Id = &builder.id
   486  
   487  	}
   488  	if builder.nameFlag {
   489  		req.Name = &builder.name
   490  
   491  	}
   492  	if builder.stateFlag {
   493  		req.State = &builder.state
   494  
   495  	}
   496  	if builder.descriptionFlag {
   497  		req.Description = &builder.description
   498  
   499  	}
   500  	if builder.createTimeFlag {
   501  		req.CreateTime = &builder.createTime
   502  
   503  	}
   504  	if builder.updateTimeFlag {
   505  		req.UpdateTime = &builder.updateTime
   506  
   507  	}
   508  	if builder.isExceedQuotaFlag {
   509  		req.IsExceedQuota = &builder.isExceedQuota
   510  
   511  	}
   512  	if builder.iconUrlFlag {
   513  		req.IconUrl = &builder.iconUrl
   514  
   515  	}
   516  	if builder.templateFlag {
   517  		req.Template = &builder.template
   518  
   519  	}
   520  	if builder.searchableFieldsFlag {
   521  		req.SearchableFields = builder.searchableFields
   522  	}
   523  	if builder.i18nNameFlag {
   524  		req.I18nName = builder.i18nName
   525  	}
   526  	if builder.i18nDescriptionFlag {
   527  		req.I18nDescription = builder.i18nDescription
   528  	}
   529  	if builder.schemaIdFlag {
   530  		req.SchemaId = &builder.schemaId
   531  
   532  	}
   533  	return req
   534  }
   535  
   536  type I18nMeta struct {
   537  	ZhCn *string `json:"zh_cn,omitempty"` // 国际化字段:中文
   538  	EnUs *string `json:"en_us,omitempty"` // 国际化字段:英文
   539  	JaJp *string `json:"ja_jp,omitempty"` // 国际化字段:日文
   540  }
   541  
   542  type I18nMetaBuilder struct {
   543  	zhCn     string // 国际化字段:中文
   544  	zhCnFlag bool
   545  	enUs     string // 国际化字段:英文
   546  	enUsFlag bool
   547  	jaJp     string // 国际化字段:日文
   548  	jaJpFlag bool
   549  }
   550  
   551  func NewI18nMetaBuilder() *I18nMetaBuilder {
   552  	builder := &I18nMetaBuilder{}
   553  	return builder
   554  }
   555  
   556  // 国际化字段:中文
   557  //
   558  // 示例值:任务
   559  func (builder *I18nMetaBuilder) ZhCn(zhCn string) *I18nMetaBuilder {
   560  	builder.zhCn = zhCn
   561  	builder.zhCnFlag = true
   562  	return builder
   563  }
   564  
   565  // 国际化字段:英文
   566  //
   567  // 示例值:TODO
   568  func (builder *I18nMetaBuilder) EnUs(enUs string) *I18nMetaBuilder {
   569  	builder.enUs = enUs
   570  	builder.enUsFlag = true
   571  	return builder
   572  }
   573  
   574  // 国际化字段:日文
   575  //
   576  // 示例值:タスク
   577  func (builder *I18nMetaBuilder) JaJp(jaJp string) *I18nMetaBuilder {
   578  	builder.jaJp = jaJp
   579  	builder.jaJpFlag = true
   580  	return builder
   581  }
   582  
   583  func (builder *I18nMetaBuilder) Build() *I18nMeta {
   584  	req := &I18nMeta{}
   585  	if builder.zhCnFlag {
   586  		req.ZhCn = &builder.zhCn
   587  
   588  	}
   589  	if builder.enUsFlag {
   590  		req.EnUs = &builder.enUs
   591  
   592  	}
   593  	if builder.jaJpFlag {
   594  		req.JaJp = &builder.jaJp
   595  
   596  	}
   597  	return req
   598  }
   599  
   600  type Item struct {
   601  	Id             *string       `json:"id,omitempty"`              // item 在 datasource 中的唯一标识
   602  	Acl            []*Acl        `json:"acl,omitempty"`             // item 的访问权限控制。 acl 字段为空数组,则默认数据不可见。如果数据是全员可见,需要设置 access="allow"; type="user"; value="everyone"
   603  	Metadata       *ItemMetadata `json:"metadata,omitempty"`        // item 的元信息
   604  	StructuredData *string       `json:"structured_data,omitempty"` // 结构化数据(以 json 字符串传递),这些字段是搜索结果的展示字段(title字段无须在此另外指定);
   605  	Content        *ItemContent  `json:"content,omitempty"`         // 非结构化数据,如文档文本,飞书搜索会用来做召回
   606  }
   607  
   608  type ItemBuilder struct {
   609  	id                 string // item 在 datasource 中的唯一标识
   610  	idFlag             bool
   611  	acl                []*Acl // item 的访问权限控制。 acl 字段为空数组,则默认数据不可见。如果数据是全员可见,需要设置 access="allow"; type="user"; value="everyone"
   612  	aclFlag            bool
   613  	metadata           *ItemMetadata // item 的元信息
   614  	metadataFlag       bool
   615  	structuredData     string // 结构化数据(以 json 字符串传递),这些字段是搜索结果的展示字段(title字段无须在此另外指定);
   616  	structuredDataFlag bool
   617  	content            *ItemContent // 非结构化数据,如文档文本,飞书搜索会用来做召回
   618  	contentFlag        bool
   619  }
   620  
   621  func NewItemBuilder() *ItemBuilder {
   622  	builder := &ItemBuilder{}
   623  	return builder
   624  }
   625  
   626  // item 在 datasource 中的唯一标识
   627  //
   628  // 示例值:01010111
   629  func (builder *ItemBuilder) Id(id string) *ItemBuilder {
   630  	builder.id = id
   631  	builder.idFlag = true
   632  	return builder
   633  }
   634  
   635  // item 的访问权限控制。 acl 字段为空数组,则默认数据不可见。如果数据是全员可见,需要设置 access="allow"; type="user"; value="everyone"
   636  //
   637  // 示例值:
   638  func (builder *ItemBuilder) Acl(acl []*Acl) *ItemBuilder {
   639  	builder.acl = acl
   640  	builder.aclFlag = true
   641  	return builder
   642  }
   643  
   644  // item 的元信息
   645  //
   646  // 示例值:
   647  func (builder *ItemBuilder) Metadata(metadata *ItemMetadata) *ItemBuilder {
   648  	builder.metadata = metadata
   649  	builder.metadataFlag = true
   650  	return builder
   651  }
   652  
   653  // 结构化数据(以 json 字符串传递),这些字段是搜索结果的展示字段(title字段无须在此另外指定);
   654  //
   655  // 示例值:{\"key\":\"value\"}
   656  func (builder *ItemBuilder) StructuredData(structuredData string) *ItemBuilder {
   657  	builder.structuredData = structuredData
   658  	builder.structuredDataFlag = true
   659  	return builder
   660  }
   661  
   662  // 非结构化数据,如文档文本,飞书搜索会用来做召回
   663  //
   664  // 示例值:
   665  func (builder *ItemBuilder) Content(content *ItemContent) *ItemBuilder {
   666  	builder.content = content
   667  	builder.contentFlag = true
   668  	return builder
   669  }
   670  
   671  func (builder *ItemBuilder) Build() *Item {
   672  	req := &Item{}
   673  	if builder.idFlag {
   674  		req.Id = &builder.id
   675  
   676  	}
   677  	if builder.aclFlag {
   678  		req.Acl = builder.acl
   679  	}
   680  	if builder.metadataFlag {
   681  		req.Metadata = builder.metadata
   682  	}
   683  	if builder.structuredDataFlag {
   684  		req.StructuredData = &builder.structuredData
   685  
   686  	}
   687  	if builder.contentFlag {
   688  		req.Content = builder.content
   689  	}
   690  	return req
   691  }
   692  
   693  type ItemContent struct {
   694  	Format      *string `json:"format,omitempty"`       // 内容的格式
   695  	ContentData *string `json:"content_data,omitempty"` // 全文数据
   696  }
   697  
   698  type ItemContentBuilder struct {
   699  	format          string // 内容的格式
   700  	formatFlag      bool
   701  	contentData     string // 全文数据
   702  	contentDataFlag bool
   703  }
   704  
   705  func NewItemContentBuilder() *ItemContentBuilder {
   706  	builder := &ItemContentBuilder{}
   707  	return builder
   708  }
   709  
   710  // 内容的格式
   711  //
   712  // 示例值:html
   713  func (builder *ItemContentBuilder) Format(format string) *ItemContentBuilder {
   714  	builder.format = format
   715  	builder.formatFlag = true
   716  	return builder
   717  }
   718  
   719  // 全文数据
   720  //
   721  // 示例值:这是一个很长的文本
   722  func (builder *ItemContentBuilder) ContentData(contentData string) *ItemContentBuilder {
   723  	builder.contentData = contentData
   724  	builder.contentDataFlag = true
   725  	return builder
   726  }
   727  
   728  func (builder *ItemContentBuilder) Build() *ItemContent {
   729  	req := &ItemContent{}
   730  	if builder.formatFlag {
   731  		req.Format = &builder.format
   732  
   733  	}
   734  	if builder.contentDataFlag {
   735  		req.ContentData = &builder.contentData
   736  
   737  	}
   738  	return req
   739  }
   740  
   741  type ItemMetadata struct {
   742  	Title           *string `json:"title,omitempty"`             // 该条数据记录对应的标题
   743  	SourceUrl       *string `json:"source_url,omitempty"`        // 该条数据记录对应的跳转url
   744  	CreateTime      *int    `json:"create_time,omitempty"`       // 数据项的创建时间。Unix 时间,单位为秒
   745  	UpdateTime      *int    `json:"update_time,omitempty"`       // 数据项的更新时间。Unix 时间,单位为秒
   746  	SourceUrlMobile *string `json:"source_url_mobile,omitempty"` // 移动端搜索命中的跳转地址。如果您PC端和移动端有不同的跳转地址,可以在这里写入移动端专用的url,我们会在搜索时为您选择合适的地址
   747  }
   748  
   749  type ItemMetadataBuilder struct {
   750  	title               string // 该条数据记录对应的标题
   751  	titleFlag           bool
   752  	sourceUrl           string // 该条数据记录对应的跳转url
   753  	sourceUrlFlag       bool
   754  	createTime          int // 数据项的创建时间。Unix 时间,单位为秒
   755  	createTimeFlag      bool
   756  	updateTime          int // 数据项的更新时间。Unix 时间,单位为秒
   757  	updateTimeFlag      bool
   758  	sourceUrlMobile     string // 移动端搜索命中的跳转地址。如果您PC端和移动端有不同的跳转地址,可以在这里写入移动端专用的url,我们会在搜索时为您选择合适的地址
   759  	sourceUrlMobileFlag bool
   760  }
   761  
   762  func NewItemMetadataBuilder() *ItemMetadataBuilder {
   763  	builder := &ItemMetadataBuilder{}
   764  	return builder
   765  }
   766  
   767  // 该条数据记录对应的标题
   768  //
   769  // 示例值:工单:无法创建文章
   770  func (builder *ItemMetadataBuilder) Title(title string) *ItemMetadataBuilder {
   771  	builder.title = title
   772  	builder.titleFlag = true
   773  	return builder
   774  }
   775  
   776  // 该条数据记录对应的跳转url
   777  //
   778  // 示例值:http://www.abc.com.cn
   779  func (builder *ItemMetadataBuilder) SourceUrl(sourceUrl string) *ItemMetadataBuilder {
   780  	builder.sourceUrl = sourceUrl
   781  	builder.sourceUrlFlag = true
   782  	return builder
   783  }
   784  
   785  // 数据项的创建时间。Unix 时间,单位为秒
   786  //
   787  // 示例值:1618831236
   788  func (builder *ItemMetadataBuilder) CreateTime(createTime int) *ItemMetadataBuilder {
   789  	builder.createTime = createTime
   790  	builder.createTimeFlag = true
   791  	return builder
   792  }
   793  
   794  // 数据项的更新时间。Unix 时间,单位为秒
   795  //
   796  // 示例值:1618831236
   797  func (builder *ItemMetadataBuilder) UpdateTime(updateTime int) *ItemMetadataBuilder {
   798  	builder.updateTime = updateTime
   799  	builder.updateTimeFlag = true
   800  	return builder
   801  }
   802  
   803  // 移动端搜索命中的跳转地址。如果您PC端和移动端有不同的跳转地址,可以在这里写入移动端专用的url,我们会在搜索时为您选择合适的地址
   804  //
   805  // 示例值:https://www.feishu.cn
   806  func (builder *ItemMetadataBuilder) SourceUrlMobile(sourceUrlMobile string) *ItemMetadataBuilder {
   807  	builder.sourceUrlMobile = sourceUrlMobile
   808  	builder.sourceUrlMobileFlag = true
   809  	return builder
   810  }
   811  
   812  func (builder *ItemMetadataBuilder) Build() *ItemMetadata {
   813  	req := &ItemMetadata{}
   814  	if builder.titleFlag {
   815  		req.Title = &builder.title
   816  
   817  	}
   818  	if builder.sourceUrlFlag {
   819  		req.SourceUrl = &builder.sourceUrl
   820  
   821  	}
   822  	if builder.createTimeFlag {
   823  		req.CreateTime = &builder.createTime
   824  
   825  	}
   826  	if builder.updateTimeFlag {
   827  		req.UpdateTime = &builder.updateTime
   828  
   829  	}
   830  	if builder.sourceUrlMobileFlag {
   831  		req.SourceUrlMobile = &builder.sourceUrlMobile
   832  
   833  	}
   834  	return req
   835  }
   836  
   837  type ItemRecord struct {
   838  	ItemId       *string `json:"item_id,omitempty"`        // 冗余当前item的ID
   839  	DataSourceId *string `json:"data_source_id,omitempty"` // 数据源id
   840  	Version      *string `json:"version,omitempty"`        // 当前数据的最新版本号,其值等于上一次item/create接口传入的时间戳
   841  	CreatedAt    *string `json:"created_at,omitempty"`     // 第一次投递时间
   842  	UpdatedAt    *string `json:"updated_at,omitempty"`     // 上一次更新落库时间
   843  }
   844  
   845  type ItemRecordBuilder struct {
   846  	itemId           string // 冗余当前item的ID
   847  	itemIdFlag       bool
   848  	dataSourceId     string // 数据源id
   849  	dataSourceIdFlag bool
   850  	version          string // 当前数据的最新版本号,其值等于上一次item/create接口传入的时间戳
   851  	versionFlag      bool
   852  	createdAt        string // 第一次投递时间
   853  	createdAtFlag    bool
   854  	updatedAt        string // 上一次更新落库时间
   855  	updatedAtFlag    bool
   856  }
   857  
   858  func NewItemRecordBuilder() *ItemRecordBuilder {
   859  	builder := &ItemRecordBuilder{}
   860  	return builder
   861  }
   862  
   863  // 冗余当前item的ID
   864  //
   865  // 示例值:
   866  func (builder *ItemRecordBuilder) ItemId(itemId string) *ItemRecordBuilder {
   867  	builder.itemId = itemId
   868  	builder.itemIdFlag = true
   869  	return builder
   870  }
   871  
   872  // 数据源id
   873  //
   874  // 示例值:
   875  func (builder *ItemRecordBuilder) DataSourceId(dataSourceId string) *ItemRecordBuilder {
   876  	builder.dataSourceId = dataSourceId
   877  	builder.dataSourceIdFlag = true
   878  	return builder
   879  }
   880  
   881  // 当前数据的最新版本号,其值等于上一次item/create接口传入的时间戳
   882  //
   883  // 示例值:
   884  func (builder *ItemRecordBuilder) Version(version string) *ItemRecordBuilder {
   885  	builder.version = version
   886  	builder.versionFlag = true
   887  	return builder
   888  }
   889  
   890  // 第一次投递时间
   891  //
   892  // 示例值:
   893  func (builder *ItemRecordBuilder) CreatedAt(createdAt string) *ItemRecordBuilder {
   894  	builder.createdAt = createdAt
   895  	builder.createdAtFlag = true
   896  	return builder
   897  }
   898  
   899  // 上一次更新落库时间
   900  //
   901  // 示例值:
   902  func (builder *ItemRecordBuilder) UpdatedAt(updatedAt string) *ItemRecordBuilder {
   903  	builder.updatedAt = updatedAt
   904  	builder.updatedAtFlag = true
   905  	return builder
   906  }
   907  
   908  func (builder *ItemRecordBuilder) Build() *ItemRecord {
   909  	req := &ItemRecord{}
   910  	if builder.itemIdFlag {
   911  		req.ItemId = &builder.itemId
   912  
   913  	}
   914  	if builder.dataSourceIdFlag {
   915  		req.DataSourceId = &builder.dataSourceId
   916  
   917  	}
   918  	if builder.versionFlag {
   919  		req.Version = &builder.version
   920  
   921  	}
   922  	if builder.createdAtFlag {
   923  		req.CreatedAt = &builder.createdAt
   924  
   925  	}
   926  	if builder.updatedAtFlag {
   927  		req.UpdatedAt = &builder.updatedAt
   928  
   929  	}
   930  	return req
   931  }
   932  
   933  type Schema struct {
   934  	Properties []*SchemaProperty `json:"properties,omitempty"` // 数据范式的属性定义
   935  	Display    *SchemaDisplay    `json:"display,omitempty"`    // 数据展示相关配置
   936  	SchemaId   *string           `json:"schema_id,omitempty"`  // 用户自定义数据范式的唯一标识
   937  }
   938  
   939  type SchemaBuilder struct {
   940  	properties     []*SchemaProperty // 数据范式的属性定义
   941  	propertiesFlag bool
   942  	display        *SchemaDisplay // 数据展示相关配置
   943  	displayFlag    bool
   944  	schemaId       string // 用户自定义数据范式的唯一标识
   945  	schemaIdFlag   bool
   946  }
   947  
   948  func NewSchemaBuilder() *SchemaBuilder {
   949  	builder := &SchemaBuilder{}
   950  	return builder
   951  }
   952  
   953  // 数据范式的属性定义
   954  //
   955  // 示例值:
   956  func (builder *SchemaBuilder) Properties(properties []*SchemaProperty) *SchemaBuilder {
   957  	builder.properties = properties
   958  	builder.propertiesFlag = true
   959  	return builder
   960  }
   961  
   962  // 数据展示相关配置
   963  //
   964  // 示例值:
   965  func (builder *SchemaBuilder) Display(display *SchemaDisplay) *SchemaBuilder {
   966  	builder.display = display
   967  	builder.displayFlag = true
   968  	return builder
   969  }
   970  
   971  // 用户自定义数据范式的唯一标识
   972  //
   973  // 示例值:jira_schema
   974  func (builder *SchemaBuilder) SchemaId(schemaId string) *SchemaBuilder {
   975  	builder.schemaId = schemaId
   976  	builder.schemaIdFlag = true
   977  	return builder
   978  }
   979  
   980  func (builder *SchemaBuilder) Build() *Schema {
   981  	req := &Schema{}
   982  	if builder.propertiesFlag {
   983  		req.Properties = builder.properties
   984  	}
   985  	if builder.displayFlag {
   986  		req.Display = builder.display
   987  	}
   988  	if builder.schemaIdFlag {
   989  		req.SchemaId = &builder.schemaId
   990  
   991  	}
   992  	return req
   993  }
   994  
   995  type SchemaDisplay struct {
   996  	CardKey       *string                      `json:"card_key,omitempty"`       // 搜索数据的展示卡片
   997  	FieldsMapping []*SchemaDisplayFieldMapping `json:"fields_mapping,omitempty"` // 数据字段名称和展示字段名称的映射关系。如果没有设置,则只会展示 与展示字段名称同名的 数据字段
   998  }
   999  
  1000  type SchemaDisplayBuilder struct {
  1001  	cardKey           string // 搜索数据的展示卡片
  1002  	cardKeyFlag       bool
  1003  	fieldsMapping     []*SchemaDisplayFieldMapping // 数据字段名称和展示字段名称的映射关系。如果没有设置,则只会展示 与展示字段名称同名的 数据字段
  1004  	fieldsMappingFlag bool
  1005  }
  1006  
  1007  func NewSchemaDisplayBuilder() *SchemaDisplayBuilder {
  1008  	builder := &SchemaDisplayBuilder{}
  1009  	return builder
  1010  }
  1011  
  1012  // 搜索数据的展示卡片
  1013  //
  1014  // 示例值:search_common_card
  1015  func (builder *SchemaDisplayBuilder) CardKey(cardKey string) *SchemaDisplayBuilder {
  1016  	builder.cardKey = cardKey
  1017  	builder.cardKeyFlag = true
  1018  	return builder
  1019  }
  1020  
  1021  // 数据字段名称和展示字段名称的映射关系。如果没有设置,则只会展示 与展示字段名称同名的 数据字段
  1022  //
  1023  // 示例值:
  1024  func (builder *SchemaDisplayBuilder) FieldsMapping(fieldsMapping []*SchemaDisplayFieldMapping) *SchemaDisplayBuilder {
  1025  	builder.fieldsMapping = fieldsMapping
  1026  	builder.fieldsMappingFlag = true
  1027  	return builder
  1028  }
  1029  
  1030  func (builder *SchemaDisplayBuilder) Build() *SchemaDisplay {
  1031  	req := &SchemaDisplay{}
  1032  	if builder.cardKeyFlag {
  1033  		req.CardKey = &builder.cardKey
  1034  
  1035  	}
  1036  	if builder.fieldsMappingFlag {
  1037  		req.FieldsMapping = builder.fieldsMapping
  1038  	}
  1039  	return req
  1040  }
  1041  
  1042  type SchemaDisplayFieldMapping struct {
  1043  	DisplayField *string `json:"display_field,omitempty"` // 展示字段名称,与 card_key 有关,每个模版能展示的字段不同。该字段不能重复
  1044  	DataField    *string `json:"data_field,omitempty"`    // 数据字段的名称。需要确保该字段对应在 schema 属性定义中的 is_returnable 为 true,否则无法展示。需要使用 ${xxx} 的规则来描述
  1045  }
  1046  
  1047  type SchemaDisplayFieldMappingBuilder struct {
  1048  	displayField     string // 展示字段名称,与 card_key 有关,每个模版能展示的字段不同。该字段不能重复
  1049  	displayFieldFlag bool
  1050  	dataField        string // 数据字段的名称。需要确保该字段对应在 schema 属性定义中的 is_returnable 为 true,否则无法展示。需要使用 ${xxx} 的规则来描述
  1051  	dataFieldFlag    bool
  1052  }
  1053  
  1054  func NewSchemaDisplayFieldMappingBuilder() *SchemaDisplayFieldMappingBuilder {
  1055  	builder := &SchemaDisplayFieldMappingBuilder{}
  1056  	return builder
  1057  }
  1058  
  1059  // 展示字段名称,与 card_key 有关,每个模版能展示的字段不同。该字段不能重复
  1060  //
  1061  // 示例值:summary
  1062  func (builder *SchemaDisplayFieldMappingBuilder) DisplayField(displayField string) *SchemaDisplayFieldMappingBuilder {
  1063  	builder.displayField = displayField
  1064  	builder.displayFieldFlag = true
  1065  	return builder
  1066  }
  1067  
  1068  // 数据字段的名称。需要确保该字段对应在 schema 属性定义中的 is_returnable 为 true,否则无法展示。需要使用 ${xxx} 的规则来描述
  1069  //
  1070  // 示例值:${description}
  1071  func (builder *SchemaDisplayFieldMappingBuilder) DataField(dataField string) *SchemaDisplayFieldMappingBuilder {
  1072  	builder.dataField = dataField
  1073  	builder.dataFieldFlag = true
  1074  	return builder
  1075  }
  1076  
  1077  func (builder *SchemaDisplayFieldMappingBuilder) Build() *SchemaDisplayFieldMapping {
  1078  	req := &SchemaDisplayFieldMapping{}
  1079  	if builder.displayFieldFlag {
  1080  		req.DisplayField = &builder.displayField
  1081  
  1082  	}
  1083  	if builder.dataFieldFlag {
  1084  		req.DataField = &builder.dataField
  1085  
  1086  	}
  1087  	return req
  1088  }
  1089  
  1090  type SchemaDisplayOption struct {
  1091  	DisplayLabel *string `json:"display_label,omitempty"` // 对外展示的标签名
  1092  	DisplayType  *string `json:"display_type,omitempty"`  // 对外展示类型
  1093  }
  1094  
  1095  type SchemaDisplayOptionBuilder struct {
  1096  	displayLabel     string // 对外展示的标签名
  1097  	displayLabelFlag bool
  1098  	displayType      string // 对外展示类型
  1099  	displayTypeFlag  bool
  1100  }
  1101  
  1102  func NewSchemaDisplayOptionBuilder() *SchemaDisplayOptionBuilder {
  1103  	builder := &SchemaDisplayOptionBuilder{}
  1104  	return builder
  1105  }
  1106  
  1107  // 对外展示的标签名
  1108  //
  1109  // 示例值:
  1110  func (builder *SchemaDisplayOptionBuilder) DisplayLabel(displayLabel string) *SchemaDisplayOptionBuilder {
  1111  	builder.displayLabel = displayLabel
  1112  	builder.displayLabelFlag = true
  1113  	return builder
  1114  }
  1115  
  1116  // 对外展示类型
  1117  //
  1118  // 示例值:
  1119  func (builder *SchemaDisplayOptionBuilder) DisplayType(displayType string) *SchemaDisplayOptionBuilder {
  1120  	builder.displayType = displayType
  1121  	builder.displayTypeFlag = true
  1122  	return builder
  1123  }
  1124  
  1125  func (builder *SchemaDisplayOptionBuilder) Build() *SchemaDisplayOption {
  1126  	req := &SchemaDisplayOption{}
  1127  	if builder.displayLabelFlag {
  1128  		req.DisplayLabel = &builder.displayLabel
  1129  
  1130  	}
  1131  	if builder.displayTypeFlag {
  1132  		req.DisplayType = &builder.displayType
  1133  
  1134  	}
  1135  	return req
  1136  }
  1137  
  1138  type SchemaProperty struct {
  1139  	Name            *string                `json:"name,omitempty"`             // 属性名
  1140  	Type            *string                `json:"type,omitempty"`             // 属性类型
  1141  	IsSearchable    *bool                  `json:"is_searchable,omitempty"`    // 该属性是否可用作搜索,默认为 false
  1142  	IsSortable      *bool                  `json:"is_sortable,omitempty"`      // 该属性是否可用作搜索结果排序,默认为 false。如果为 true,需要再配置 sortOptions
  1143  	IsReturnable    *bool                  `json:"is_returnable,omitempty"`    // 该属性是否可用作返回字段,为 false 时,该字段不会被召回和展示。默认为 false
  1144  	SortOptions     *SchemaSortOptions     `json:"sort_options,omitempty"`     // 属性排序的可选配置,当 is_sortable 为 true 时,该字段为必填字段
  1145  	TypeDefinitions *SchemaTypeDefinitions `json:"type_definitions,omitempty"` // 相关类型数据的定义和约束
  1146  	SearchOptions   *SchemaSearchOptions   `json:"search_options,omitempty"`   // 属性搜索的可选配置,当 is_searchable 为 true 时,该字段为必填参数
  1147  }
  1148  
  1149  type SchemaPropertyBuilder struct {
  1150  	name                string // 属性名
  1151  	nameFlag            bool
  1152  	type_               string // 属性类型
  1153  	typeFlag            bool
  1154  	isSearchable        bool // 该属性是否可用作搜索,默认为 false
  1155  	isSearchableFlag    bool
  1156  	isSortable          bool // 该属性是否可用作搜索结果排序,默认为 false。如果为 true,需要再配置 sortOptions
  1157  	isSortableFlag      bool
  1158  	isReturnable        bool // 该属性是否可用作返回字段,为 false 时,该字段不会被召回和展示。默认为 false
  1159  	isReturnableFlag    bool
  1160  	sortOptions         *SchemaSortOptions // 属性排序的可选配置,当 is_sortable 为 true 时,该字段为必填字段
  1161  	sortOptionsFlag     bool
  1162  	typeDefinitions     *SchemaTypeDefinitions // 相关类型数据的定义和约束
  1163  	typeDefinitionsFlag bool
  1164  	searchOptions       *SchemaSearchOptions // 属性搜索的可选配置,当 is_searchable 为 true 时,该字段为必填参数
  1165  	searchOptionsFlag   bool
  1166  }
  1167  
  1168  func NewSchemaPropertyBuilder() *SchemaPropertyBuilder {
  1169  	builder := &SchemaPropertyBuilder{}
  1170  	return builder
  1171  }
  1172  
  1173  // 属性名
  1174  //
  1175  // 示例值:summary
  1176  func (builder *SchemaPropertyBuilder) Name(name string) *SchemaPropertyBuilder {
  1177  	builder.name = name
  1178  	builder.nameFlag = true
  1179  	return builder
  1180  }
  1181  
  1182  // 属性类型
  1183  //
  1184  // 示例值:text
  1185  func (builder *SchemaPropertyBuilder) Type(type_ string) *SchemaPropertyBuilder {
  1186  	builder.type_ = type_
  1187  	builder.typeFlag = true
  1188  	return builder
  1189  }
  1190  
  1191  // 该属性是否可用作搜索,默认为 false
  1192  //
  1193  // 示例值:true
  1194  func (builder *SchemaPropertyBuilder) IsSearchable(isSearchable bool) *SchemaPropertyBuilder {
  1195  	builder.isSearchable = isSearchable
  1196  	builder.isSearchableFlag = true
  1197  	return builder
  1198  }
  1199  
  1200  // 该属性是否可用作搜索结果排序,默认为 false。如果为 true,需要再配置 sortOptions
  1201  //
  1202  // 示例值:false
  1203  func (builder *SchemaPropertyBuilder) IsSortable(isSortable bool) *SchemaPropertyBuilder {
  1204  	builder.isSortable = isSortable
  1205  	builder.isSortableFlag = true
  1206  	return builder
  1207  }
  1208  
  1209  // 该属性是否可用作返回字段,为 false 时,该字段不会被召回和展示。默认为 false
  1210  //
  1211  // 示例值:true
  1212  func (builder *SchemaPropertyBuilder) IsReturnable(isReturnable bool) *SchemaPropertyBuilder {
  1213  	builder.isReturnable = isReturnable
  1214  	builder.isReturnableFlag = true
  1215  	return builder
  1216  }
  1217  
  1218  // 属性排序的可选配置,当 is_sortable 为 true 时,该字段为必填字段
  1219  //
  1220  // 示例值:
  1221  func (builder *SchemaPropertyBuilder) SortOptions(sortOptions *SchemaSortOptions) *SchemaPropertyBuilder {
  1222  	builder.sortOptions = sortOptions
  1223  	builder.sortOptionsFlag = true
  1224  	return builder
  1225  }
  1226  
  1227  // 相关类型数据的定义和约束
  1228  //
  1229  // 示例值:
  1230  func (builder *SchemaPropertyBuilder) TypeDefinitions(typeDefinitions *SchemaTypeDefinitions) *SchemaPropertyBuilder {
  1231  	builder.typeDefinitions = typeDefinitions
  1232  	builder.typeDefinitionsFlag = true
  1233  	return builder
  1234  }
  1235  
  1236  // 属性搜索的可选配置,当 is_searchable 为 true 时,该字段为必填参数
  1237  //
  1238  // 示例值:
  1239  func (builder *SchemaPropertyBuilder) SearchOptions(searchOptions *SchemaSearchOptions) *SchemaPropertyBuilder {
  1240  	builder.searchOptions = searchOptions
  1241  	builder.searchOptionsFlag = true
  1242  	return builder
  1243  }
  1244  
  1245  func (builder *SchemaPropertyBuilder) Build() *SchemaProperty {
  1246  	req := &SchemaProperty{}
  1247  	if builder.nameFlag {
  1248  		req.Name = &builder.name
  1249  
  1250  	}
  1251  	if builder.typeFlag {
  1252  		req.Type = &builder.type_
  1253  
  1254  	}
  1255  	if builder.isSearchableFlag {
  1256  		req.IsSearchable = &builder.isSearchable
  1257  
  1258  	}
  1259  	if builder.isSortableFlag {
  1260  		req.IsSortable = &builder.isSortable
  1261  
  1262  	}
  1263  	if builder.isReturnableFlag {
  1264  		req.IsReturnable = &builder.isReturnable
  1265  
  1266  	}
  1267  	if builder.sortOptionsFlag {
  1268  		req.SortOptions = builder.sortOptions
  1269  	}
  1270  	if builder.typeDefinitionsFlag {
  1271  		req.TypeDefinitions = builder.typeDefinitions
  1272  	}
  1273  	if builder.searchOptionsFlag {
  1274  		req.SearchOptions = builder.searchOptions
  1275  	}
  1276  	return req
  1277  }
  1278  
  1279  type SchemaPropertyDefinition struct {
  1280  	Name                 *string              `json:"name,omitempty"`                   // 属性名称
  1281  	IsReturnable         *bool                `json:"is_returnable,omitempty"`          // 搜索中是否可作为搜索结果返回
  1282  	IsRepeatable         *bool                `json:"is_repeatable,omitempty"`          // 是否允许重复
  1283  	IsSortable           *bool                `json:"is_sortable,omitempty"`            // 是否可用作排序
  1284  	IsFacetable          *bool                `json:"is_facetable,omitempty"`           // 是否可用来生成 facet,仅支持 Boolean,Enum,String 类型属性。
  1285  	IsWildcardSearchable *bool                `json:"is_wildcard_searchable,omitempty"` // 是否可以对该属性使用通配符搜索,只支持 String 类型属性。
  1286  	Type                 *string              `json:"type,omitempty"`                   // 属性数据类型
  1287  	DisplayOptions       *SchemaDisplayOption `json:"display_options,omitempty"`        // 属性对外展示可选项
  1288  }
  1289  
  1290  type SchemaPropertyDefinitionBuilder struct {
  1291  	name                     string // 属性名称
  1292  	nameFlag                 bool
  1293  	isReturnable             bool // 搜索中是否可作为搜索结果返回
  1294  	isReturnableFlag         bool
  1295  	isRepeatable             bool // 是否允许重复
  1296  	isRepeatableFlag         bool
  1297  	isSortable               bool // 是否可用作排序
  1298  	isSortableFlag           bool
  1299  	isFacetable              bool // 是否可用来生成 facet,仅支持 Boolean,Enum,String 类型属性。
  1300  	isFacetableFlag          bool
  1301  	isWildcardSearchable     bool // 是否可以对该属性使用通配符搜索,只支持 String 类型属性。
  1302  	isWildcardSearchableFlag bool
  1303  	type_                    string // 属性数据类型
  1304  	typeFlag                 bool
  1305  	displayOptions           *SchemaDisplayOption // 属性对外展示可选项
  1306  	displayOptionsFlag       bool
  1307  }
  1308  
  1309  func NewSchemaPropertyDefinitionBuilder() *SchemaPropertyDefinitionBuilder {
  1310  	builder := &SchemaPropertyDefinitionBuilder{}
  1311  	return builder
  1312  }
  1313  
  1314  // 属性名称
  1315  //
  1316  // 示例值:
  1317  func (builder *SchemaPropertyDefinitionBuilder) Name(name string) *SchemaPropertyDefinitionBuilder {
  1318  	builder.name = name
  1319  	builder.nameFlag = true
  1320  	return builder
  1321  }
  1322  
  1323  // 搜索中是否可作为搜索结果返回
  1324  //
  1325  // 示例值:false
  1326  func (builder *SchemaPropertyDefinitionBuilder) IsReturnable(isReturnable bool) *SchemaPropertyDefinitionBuilder {
  1327  	builder.isReturnable = isReturnable
  1328  	builder.isReturnableFlag = true
  1329  	return builder
  1330  }
  1331  
  1332  // 是否允许重复
  1333  //
  1334  // 示例值:false
  1335  func (builder *SchemaPropertyDefinitionBuilder) IsRepeatable(isRepeatable bool) *SchemaPropertyDefinitionBuilder {
  1336  	builder.isRepeatable = isRepeatable
  1337  	builder.isRepeatableFlag = true
  1338  	return builder
  1339  }
  1340  
  1341  // 是否可用作排序
  1342  //
  1343  // 示例值:false
  1344  func (builder *SchemaPropertyDefinitionBuilder) IsSortable(isSortable bool) *SchemaPropertyDefinitionBuilder {
  1345  	builder.isSortable = isSortable
  1346  	builder.isSortableFlag = true
  1347  	return builder
  1348  }
  1349  
  1350  // 是否可用来生成 facet,仅支持 Boolean,Enum,String 类型属性。
  1351  //
  1352  // 示例值:false
  1353  func (builder *SchemaPropertyDefinitionBuilder) IsFacetable(isFacetable bool) *SchemaPropertyDefinitionBuilder {
  1354  	builder.isFacetable = isFacetable
  1355  	builder.isFacetableFlag = true
  1356  	return builder
  1357  }
  1358  
  1359  // 是否可以对该属性使用通配符搜索,只支持 String 类型属性。
  1360  //
  1361  // 示例值:
  1362  func (builder *SchemaPropertyDefinitionBuilder) IsWildcardSearchable(isWildcardSearchable bool) *SchemaPropertyDefinitionBuilder {
  1363  	builder.isWildcardSearchable = isWildcardSearchable
  1364  	builder.isWildcardSearchableFlag = true
  1365  	return builder
  1366  }
  1367  
  1368  // 属性数据类型
  1369  //
  1370  // 示例值:INTEGER
  1371  func (builder *SchemaPropertyDefinitionBuilder) Type(type_ string) *SchemaPropertyDefinitionBuilder {
  1372  	builder.type_ = type_
  1373  	builder.typeFlag = true
  1374  	return builder
  1375  }
  1376  
  1377  // 属性对外展示可选项
  1378  //
  1379  // 示例值:
  1380  func (builder *SchemaPropertyDefinitionBuilder) DisplayOptions(displayOptions *SchemaDisplayOption) *SchemaPropertyDefinitionBuilder {
  1381  	builder.displayOptions = displayOptions
  1382  	builder.displayOptionsFlag = true
  1383  	return builder
  1384  }
  1385  
  1386  func (builder *SchemaPropertyDefinitionBuilder) Build() *SchemaPropertyDefinition {
  1387  	req := &SchemaPropertyDefinition{}
  1388  	if builder.nameFlag {
  1389  		req.Name = &builder.name
  1390  
  1391  	}
  1392  	if builder.isReturnableFlag {
  1393  		req.IsReturnable = &builder.isReturnable
  1394  
  1395  	}
  1396  	if builder.isRepeatableFlag {
  1397  		req.IsRepeatable = &builder.isRepeatable
  1398  
  1399  	}
  1400  	if builder.isSortableFlag {
  1401  		req.IsSortable = &builder.isSortable
  1402  
  1403  	}
  1404  	if builder.isFacetableFlag {
  1405  		req.IsFacetable = &builder.isFacetable
  1406  
  1407  	}
  1408  	if builder.isWildcardSearchableFlag {
  1409  		req.IsWildcardSearchable = &builder.isWildcardSearchable
  1410  
  1411  	}
  1412  	if builder.typeFlag {
  1413  		req.Type = &builder.type_
  1414  
  1415  	}
  1416  	if builder.displayOptionsFlag {
  1417  		req.DisplayOptions = builder.displayOptions
  1418  	}
  1419  	return req
  1420  }
  1421  
  1422  type SchemaSearchOptions struct {
  1423  	EnableSemanticMatch     *bool `json:"enable_semantic_match,omitempty"`      // 是否支持语义切词召回。默认不支持(推荐使用在长文本的场景)
  1424  	EnableExactMatch        *bool `json:"enable_exact_match,omitempty"`         // 是否支持精确匹配。默认不支持(推荐使用在短文本、需要精确查找的场景)
  1425  	EnablePrefixMatch       *bool `json:"enable_prefix_match,omitempty"`        // 是否支持前缀匹配(短文本的默认的分词/召回策略。前缀长度为 1-12)
  1426  	EnableNumberSuffixMatch *bool `json:"enable_number_suffix_match,omitempty"` // 是否支持数据后缀匹配。默认不支持(推荐使用在短文本、有数字后缀查找的场景。后缀长度为3-12)
  1427  	EnableCamelMatch        *bool `json:"enable_camel_match,omitempty"`         // 是否支持驼峰英文匹配。默认不支持(推荐使用在短文本,且包含驼峰形式英文的查找场景)
  1428  }
  1429  
  1430  type SchemaSearchOptionsBuilder struct {
  1431  	enableSemanticMatch         bool // 是否支持语义切词召回。默认不支持(推荐使用在长文本的场景)
  1432  	enableSemanticMatchFlag     bool
  1433  	enableExactMatch            bool // 是否支持精确匹配。默认不支持(推荐使用在短文本、需要精确查找的场景)
  1434  	enableExactMatchFlag        bool
  1435  	enablePrefixMatch           bool // 是否支持前缀匹配(短文本的默认的分词/召回策略。前缀长度为 1-12)
  1436  	enablePrefixMatchFlag       bool
  1437  	enableNumberSuffixMatch     bool // 是否支持数据后缀匹配。默认不支持(推荐使用在短文本、有数字后缀查找的场景。后缀长度为3-12)
  1438  	enableNumberSuffixMatchFlag bool
  1439  	enableCamelMatch            bool // 是否支持驼峰英文匹配。默认不支持(推荐使用在短文本,且包含驼峰形式英文的查找场景)
  1440  	enableCamelMatchFlag        bool
  1441  }
  1442  
  1443  func NewSchemaSearchOptionsBuilder() *SchemaSearchOptionsBuilder {
  1444  	builder := &SchemaSearchOptionsBuilder{}
  1445  	return builder
  1446  }
  1447  
  1448  // 是否支持语义切词召回。默认不支持(推荐使用在长文本的场景)
  1449  //
  1450  // 示例值:true
  1451  func (builder *SchemaSearchOptionsBuilder) EnableSemanticMatch(enableSemanticMatch bool) *SchemaSearchOptionsBuilder {
  1452  	builder.enableSemanticMatch = enableSemanticMatch
  1453  	builder.enableSemanticMatchFlag = true
  1454  	return builder
  1455  }
  1456  
  1457  // 是否支持精确匹配。默认不支持(推荐使用在短文本、需要精确查找的场景)
  1458  //
  1459  // 示例值:false
  1460  func (builder *SchemaSearchOptionsBuilder) EnableExactMatch(enableExactMatch bool) *SchemaSearchOptionsBuilder {
  1461  	builder.enableExactMatch = enableExactMatch
  1462  	builder.enableExactMatchFlag = true
  1463  	return builder
  1464  }
  1465  
  1466  // 是否支持前缀匹配(短文本的默认的分词/召回策略。前缀长度为 1-12)
  1467  //
  1468  // 示例值:false
  1469  func (builder *SchemaSearchOptionsBuilder) EnablePrefixMatch(enablePrefixMatch bool) *SchemaSearchOptionsBuilder {
  1470  	builder.enablePrefixMatch = enablePrefixMatch
  1471  	builder.enablePrefixMatchFlag = true
  1472  	return builder
  1473  }
  1474  
  1475  // 是否支持数据后缀匹配。默认不支持(推荐使用在短文本、有数字后缀查找的场景。后缀长度为3-12)
  1476  //
  1477  // 示例值:false
  1478  func (builder *SchemaSearchOptionsBuilder) EnableNumberSuffixMatch(enableNumberSuffixMatch bool) *SchemaSearchOptionsBuilder {
  1479  	builder.enableNumberSuffixMatch = enableNumberSuffixMatch
  1480  	builder.enableNumberSuffixMatchFlag = true
  1481  	return builder
  1482  }
  1483  
  1484  // 是否支持驼峰英文匹配。默认不支持(推荐使用在短文本,且包含驼峰形式英文的查找场景)
  1485  //
  1486  // 示例值:false
  1487  func (builder *SchemaSearchOptionsBuilder) EnableCamelMatch(enableCamelMatch bool) *SchemaSearchOptionsBuilder {
  1488  	builder.enableCamelMatch = enableCamelMatch
  1489  	builder.enableCamelMatchFlag = true
  1490  	return builder
  1491  }
  1492  
  1493  func (builder *SchemaSearchOptionsBuilder) Build() *SchemaSearchOptions {
  1494  	req := &SchemaSearchOptions{}
  1495  	if builder.enableSemanticMatchFlag {
  1496  		req.EnableSemanticMatch = &builder.enableSemanticMatch
  1497  
  1498  	}
  1499  	if builder.enableExactMatchFlag {
  1500  		req.EnableExactMatch = &builder.enableExactMatch
  1501  
  1502  	}
  1503  	if builder.enablePrefixMatchFlag {
  1504  		req.EnablePrefixMatch = &builder.enablePrefixMatch
  1505  
  1506  	}
  1507  	if builder.enableNumberSuffixMatchFlag {
  1508  		req.EnableNumberSuffixMatch = &builder.enableNumberSuffixMatch
  1509  
  1510  	}
  1511  	if builder.enableCamelMatchFlag {
  1512  		req.EnableCamelMatch = &builder.enableCamelMatch
  1513  
  1514  	}
  1515  	return req
  1516  }
  1517  
  1518  type SchemaSortOptions struct {
  1519  	Priority *int    `json:"priority,omitempty"` // 排序的优先级,可选范围为 0~4,0为最高优先级。如果优先级相同,则随机进行排序。默认为0
  1520  	Order    *string `json:"order,omitempty"`    // 排序的顺序。默认为 desc
  1521  }
  1522  
  1523  type SchemaSortOptionsBuilder struct {
  1524  	priority     int // 排序的优先级,可选范围为 0~4,0为最高优先级。如果优先级相同,则随机进行排序。默认为0
  1525  	priorityFlag bool
  1526  	order        string // 排序的顺序。默认为 desc
  1527  	orderFlag    bool
  1528  }
  1529  
  1530  func NewSchemaSortOptionsBuilder() *SchemaSortOptionsBuilder {
  1531  	builder := &SchemaSortOptionsBuilder{}
  1532  	return builder
  1533  }
  1534  
  1535  // 排序的优先级,可选范围为 0~4,0为最高优先级。如果优先级相同,则随机进行排序。默认为0
  1536  //
  1537  // 示例值:0
  1538  func (builder *SchemaSortOptionsBuilder) Priority(priority int) *SchemaSortOptionsBuilder {
  1539  	builder.priority = priority
  1540  	builder.priorityFlag = true
  1541  	return builder
  1542  }
  1543  
  1544  // 排序的顺序。默认为 desc
  1545  //
  1546  // 示例值:asc
  1547  func (builder *SchemaSortOptionsBuilder) Order(order string) *SchemaSortOptionsBuilder {
  1548  	builder.order = order
  1549  	builder.orderFlag = true
  1550  	return builder
  1551  }
  1552  
  1553  func (builder *SchemaSortOptionsBuilder) Build() *SchemaSortOptions {
  1554  	req := &SchemaSortOptions{}
  1555  	if builder.priorityFlag {
  1556  		req.Priority = &builder.priority
  1557  
  1558  	}
  1559  	if builder.orderFlag {
  1560  		req.Order = &builder.order
  1561  
  1562  	}
  1563  	return req
  1564  }
  1565  
  1566  type SchemaTagOptions struct {
  1567  	Name  *string `json:"name,omitempty"`  // tag 对应的枚举值名称
  1568  	Color *string `json:"color,omitempty"` // 标签对应的颜色
  1569  	Text  *string `json:"text,omitempty"`  // 标签中展示的文本
  1570  }
  1571  
  1572  type SchemaTagOptionsBuilder struct {
  1573  	name      string // tag 对应的枚举值名称
  1574  	nameFlag  bool
  1575  	color     string // 标签对应的颜色
  1576  	colorFlag bool
  1577  	text      string // 标签中展示的文本
  1578  	textFlag  bool
  1579  }
  1580  
  1581  func NewSchemaTagOptionsBuilder() *SchemaTagOptionsBuilder {
  1582  	builder := &SchemaTagOptionsBuilder{}
  1583  	return builder
  1584  }
  1585  
  1586  // tag 对应的枚举值名称
  1587  //
  1588  // 示例值:status
  1589  func (builder *SchemaTagOptionsBuilder) Name(name string) *SchemaTagOptionsBuilder {
  1590  	builder.name = name
  1591  	builder.nameFlag = true
  1592  	return builder
  1593  }
  1594  
  1595  // 标签对应的颜色
  1596  //
  1597  // 示例值:blue
  1598  func (builder *SchemaTagOptionsBuilder) Color(color string) *SchemaTagOptionsBuilder {
  1599  	builder.color = color
  1600  	builder.colorFlag = true
  1601  	return builder
  1602  }
  1603  
  1604  // 标签中展示的文本
  1605  //
  1606  // 示例值:PASS
  1607  func (builder *SchemaTagOptionsBuilder) Text(text string) *SchemaTagOptionsBuilder {
  1608  	builder.text = text
  1609  	builder.textFlag = true
  1610  	return builder
  1611  }
  1612  
  1613  func (builder *SchemaTagOptionsBuilder) Build() *SchemaTagOptions {
  1614  	req := &SchemaTagOptions{}
  1615  	if builder.nameFlag {
  1616  		req.Name = &builder.name
  1617  
  1618  	}
  1619  	if builder.colorFlag {
  1620  		req.Color = &builder.color
  1621  
  1622  	}
  1623  	if builder.textFlag {
  1624  		req.Text = &builder.text
  1625  
  1626  	}
  1627  	return req
  1628  }
  1629  
  1630  type SchemaTypeDefinitions struct {
  1631  	Tag []*SchemaTagOptions `json:"tag,omitempty"` // 标签类型的定义
  1632  }
  1633  
  1634  type SchemaTypeDefinitionsBuilder struct {
  1635  	tag     []*SchemaTagOptions // 标签类型的定义
  1636  	tagFlag bool
  1637  }
  1638  
  1639  func NewSchemaTypeDefinitionsBuilder() *SchemaTypeDefinitionsBuilder {
  1640  	builder := &SchemaTypeDefinitionsBuilder{}
  1641  	return builder
  1642  }
  1643  
  1644  // 标签类型的定义
  1645  //
  1646  // 示例值:
  1647  func (builder *SchemaTypeDefinitionsBuilder) Tag(tag []*SchemaTagOptions) *SchemaTypeDefinitionsBuilder {
  1648  	builder.tag = tag
  1649  	builder.tagFlag = true
  1650  	return builder
  1651  }
  1652  
  1653  func (builder *SchemaTypeDefinitionsBuilder) Build() *SchemaTypeDefinitions {
  1654  	req := &SchemaTypeDefinitions{}
  1655  	if builder.tagFlag {
  1656  		req.Tag = builder.tag
  1657  	}
  1658  	return req
  1659  }
  1660  
  1661  type CreateDataSourceReqBuilder struct {
  1662  	apiReq     *larkcore.ApiReq
  1663  	dataSource *DataSource
  1664  }
  1665  
  1666  func NewCreateDataSourceReqBuilder() *CreateDataSourceReqBuilder {
  1667  	builder := &CreateDataSourceReqBuilder{}
  1668  	builder.apiReq = &larkcore.ApiReq{
  1669  		PathParams:  larkcore.PathParams{},
  1670  		QueryParams: larkcore.QueryParams{},
  1671  	}
  1672  	return builder
  1673  }
  1674  
  1675  // 创建一个数据源
  1676  func (builder *CreateDataSourceReqBuilder) DataSource(dataSource *DataSource) *CreateDataSourceReqBuilder {
  1677  	builder.dataSource = dataSource
  1678  	return builder
  1679  }
  1680  
  1681  func (builder *CreateDataSourceReqBuilder) Build() *CreateDataSourceReq {
  1682  	req := &CreateDataSourceReq{}
  1683  	req.apiReq = &larkcore.ApiReq{}
  1684  	req.apiReq.Body = builder.dataSource
  1685  	return req
  1686  }
  1687  
  1688  type CreateDataSourceReq struct {
  1689  	apiReq     *larkcore.ApiReq
  1690  	DataSource *DataSource `body:""`
  1691  }
  1692  
  1693  type CreateDataSourceRespData struct {
  1694  	DataSource *DataSource `json:"data_source,omitempty"` // 数据源实例
  1695  }
  1696  
  1697  type CreateDataSourceResp struct {
  1698  	*larkcore.ApiResp `json:"-"`
  1699  	larkcore.CodeError
  1700  	Data *CreateDataSourceRespData `json:"data"` // 业务数据
  1701  }
  1702  
  1703  func (resp *CreateDataSourceResp) Success() bool {
  1704  	return resp.Code == 0
  1705  }
  1706  
  1707  type DeleteDataSourceReqBuilder struct {
  1708  	apiReq *larkcore.ApiReq
  1709  }
  1710  
  1711  func NewDeleteDataSourceReqBuilder() *DeleteDataSourceReqBuilder {
  1712  	builder := &DeleteDataSourceReqBuilder{}
  1713  	builder.apiReq = &larkcore.ApiReq{
  1714  		PathParams:  larkcore.PathParams{},
  1715  		QueryParams: larkcore.QueryParams{},
  1716  	}
  1717  	return builder
  1718  }
  1719  
  1720  // 数据源的唯一标识
  1721  //
  1722  // 示例值:6953903108179099667
  1723  func (builder *DeleteDataSourceReqBuilder) DataSourceId(dataSourceId string) *DeleteDataSourceReqBuilder {
  1724  	builder.apiReq.PathParams.Set("data_source_id", fmt.Sprint(dataSourceId))
  1725  	return builder
  1726  }
  1727  
  1728  func (builder *DeleteDataSourceReqBuilder) Build() *DeleteDataSourceReq {
  1729  	req := &DeleteDataSourceReq{}
  1730  	req.apiReq = &larkcore.ApiReq{}
  1731  	req.apiReq.PathParams = builder.apiReq.PathParams
  1732  	return req
  1733  }
  1734  
  1735  type DeleteDataSourceReq struct {
  1736  	apiReq *larkcore.ApiReq
  1737  }
  1738  
  1739  type DeleteDataSourceResp struct {
  1740  	*larkcore.ApiResp `json:"-"`
  1741  	larkcore.CodeError
  1742  }
  1743  
  1744  func (resp *DeleteDataSourceResp) Success() bool {
  1745  	return resp.Code == 0
  1746  }
  1747  
  1748  type GetDataSourceReqBuilder struct {
  1749  	apiReq *larkcore.ApiReq
  1750  }
  1751  
  1752  func NewGetDataSourceReqBuilder() *GetDataSourceReqBuilder {
  1753  	builder := &GetDataSourceReqBuilder{}
  1754  	builder.apiReq = &larkcore.ApiReq{
  1755  		PathParams:  larkcore.PathParams{},
  1756  		QueryParams: larkcore.QueryParams{},
  1757  	}
  1758  	return builder
  1759  }
  1760  
  1761  // 数据源的唯一标识
  1762  //
  1763  // 示例值:service_ticket
  1764  func (builder *GetDataSourceReqBuilder) DataSourceId(dataSourceId string) *GetDataSourceReqBuilder {
  1765  	builder.apiReq.PathParams.Set("data_source_id", fmt.Sprint(dataSourceId))
  1766  	return builder
  1767  }
  1768  
  1769  func (builder *GetDataSourceReqBuilder) Build() *GetDataSourceReq {
  1770  	req := &GetDataSourceReq{}
  1771  	req.apiReq = &larkcore.ApiReq{}
  1772  	req.apiReq.PathParams = builder.apiReq.PathParams
  1773  	return req
  1774  }
  1775  
  1776  type GetDataSourceReq struct {
  1777  	apiReq *larkcore.ApiReq
  1778  }
  1779  
  1780  type GetDataSourceRespData struct {
  1781  	DataSource *DataSource `json:"data_source,omitempty"` // 数据源实例
  1782  }
  1783  
  1784  type GetDataSourceResp struct {
  1785  	*larkcore.ApiResp `json:"-"`
  1786  	larkcore.CodeError
  1787  	Data *GetDataSourceRespData `json:"data"` // 业务数据
  1788  }
  1789  
  1790  func (resp *GetDataSourceResp) Success() bool {
  1791  	return resp.Code == 0
  1792  }
  1793  
  1794  type ListDataSourceReqBuilder struct {
  1795  	apiReq *larkcore.ApiReq
  1796  	limit  int // 最大返回多少记录,当使用迭代器访问时才有效
  1797  }
  1798  
  1799  func NewListDataSourceReqBuilder() *ListDataSourceReqBuilder {
  1800  	builder := &ListDataSourceReqBuilder{}
  1801  	builder.apiReq = &larkcore.ApiReq{
  1802  		PathParams:  larkcore.PathParams{},
  1803  		QueryParams: larkcore.QueryParams{},
  1804  	}
  1805  	return builder
  1806  }
  1807  
  1808  // 最大返回多少记录,当使用迭代器访问时才有效
  1809  func (builder *ListDataSourceReqBuilder) Limit(limit int) *ListDataSourceReqBuilder {
  1810  	builder.limit = limit
  1811  	return builder
  1812  }
  1813  
  1814  // 回包数据格式,0-全量数据;1-摘要数据。;;**注**:摘要数据仅包含"id","name","state"。
  1815  //
  1816  // 示例值:0
  1817  func (builder *ListDataSourceReqBuilder) View(view int) *ListDataSourceReqBuilder {
  1818  	builder.apiReq.QueryParams.Set("view", fmt.Sprint(view))
  1819  	return builder
  1820  }
  1821  
  1822  //
  1823  //
  1824  // 示例值:PxZFma9OIRhdBlT/dOYNiu2Ro8F2WAhcby7OhOijfljZ
  1825  func (builder *ListDataSourceReqBuilder) PageToken(pageToken string) *ListDataSourceReqBuilder {
  1826  	builder.apiReq.QueryParams.Set("page_token", fmt.Sprint(pageToken))
  1827  	return builder
  1828  }
  1829  
  1830  //
  1831  //
  1832  // 示例值:10
  1833  func (builder *ListDataSourceReqBuilder) PageSize(pageSize int) *ListDataSourceReqBuilder {
  1834  	builder.apiReq.QueryParams.Set("page_size", fmt.Sprint(pageSize))
  1835  	return builder
  1836  }
  1837  
  1838  func (builder *ListDataSourceReqBuilder) Build() *ListDataSourceReq {
  1839  	req := &ListDataSourceReq{}
  1840  	req.apiReq = &larkcore.ApiReq{}
  1841  	req.Limit = builder.limit
  1842  	req.apiReq.QueryParams = builder.apiReq.QueryParams
  1843  	return req
  1844  }
  1845  
  1846  type ListDataSourceReq struct {
  1847  	apiReq *larkcore.ApiReq
  1848  	Limit  int // 最多返回多少记录,只有在使用迭代器访问时,才有效
  1849  
  1850  }
  1851  
  1852  type ListDataSourceRespData struct {
  1853  	HasMore   *bool         `json:"has_more,omitempty"`   // 是否有更多数据
  1854  	PageToken *string       `json:"page_token,omitempty"` // 取数据的凭证
  1855  	Items     []*DataSource `json:"items,omitempty"`      // 数据源中的数据记录
  1856  }
  1857  
  1858  type ListDataSourceResp struct {
  1859  	*larkcore.ApiResp `json:"-"`
  1860  	larkcore.CodeError
  1861  	Data *ListDataSourceRespData `json:"data"` // 业务数据
  1862  }
  1863  
  1864  func (resp *ListDataSourceResp) Success() bool {
  1865  	return resp.Code == 0
  1866  }
  1867  
  1868  type PatchDataSourceReqBodyBuilder struct {
  1869  	name                string // 数据源的展示名称
  1870  	nameFlag            bool
  1871  	state               int // 数据源状态,0-已上线,1-未上线
  1872  	stateFlag           bool
  1873  	description         string // 对于数据源的描述
  1874  	descriptionFlag     bool
  1875  	iconUrl             string // 数据源在 search tab 上的展示图标路径
  1876  	iconUrlFlag         bool
  1877  	i18nName            *I18nMeta // 数据源名称多语言配置,json格式,key为语言locale,value为对应文案,例如{"zh_cn":"测试数据源", "en_us":"Test DataSource"}
  1878  	i18nNameFlag        bool
  1879  	i18nDescription     *I18nMeta // 数据源描述多语言配置,json格式,key为语言locale,value为对应文案,例如{"zh_cn":"搜索测试数据源相关数据", "en_us":"Search data from Test DataSource"}
  1880  	i18nDescriptionFlag bool
  1881  }
  1882  
  1883  func NewPatchDataSourceReqBodyBuilder() *PatchDataSourceReqBodyBuilder {
  1884  	builder := &PatchDataSourceReqBodyBuilder{}
  1885  	return builder
  1886  }
  1887  
  1888  // 数据源的展示名称
  1889  //
  1890  //示例值:客服工单
  1891  func (builder *PatchDataSourceReqBodyBuilder) Name(name string) *PatchDataSourceReqBodyBuilder {
  1892  	builder.name = name
  1893  	builder.nameFlag = true
  1894  	return builder
  1895  }
  1896  
  1897  // 数据源状态,0-已上线,1-未上线
  1898  //
  1899  //示例值:0
  1900  func (builder *PatchDataSourceReqBodyBuilder) State(state int) *PatchDataSourceReqBodyBuilder {
  1901  	builder.state = state
  1902  	builder.stateFlag = true
  1903  	return builder
  1904  }
  1905  
  1906  // 对于数据源的描述
  1907  //
  1908  //示例值:搜索客服工单
  1909  func (builder *PatchDataSourceReqBodyBuilder) Description(description string) *PatchDataSourceReqBodyBuilder {
  1910  	builder.description = description
  1911  	builder.descriptionFlag = true
  1912  	return builder
  1913  }
  1914  
  1915  // 数据源在 search tab 上的展示图标路径
  1916  //
  1917  //示例值:https://www.xxx.com/open.jpg
  1918  func (builder *PatchDataSourceReqBodyBuilder) IconUrl(iconUrl string) *PatchDataSourceReqBodyBuilder {
  1919  	builder.iconUrl = iconUrl
  1920  	builder.iconUrlFlag = true
  1921  	return builder
  1922  }
  1923  
  1924  // 数据源名称多语言配置,json格式,key为语言locale,value为对应文案,例如{"zh_cn":"测试数据源", "en_us":"Test DataSource"}
  1925  //
  1926  //示例值:
  1927  func (builder *PatchDataSourceReqBodyBuilder) I18nName(i18nName *I18nMeta) *PatchDataSourceReqBodyBuilder {
  1928  	builder.i18nName = i18nName
  1929  	builder.i18nNameFlag = true
  1930  	return builder
  1931  }
  1932  
  1933  // 数据源描述多语言配置,json格式,key为语言locale,value为对应文案,例如{"zh_cn":"搜索测试数据源相关数据", "en_us":"Search data from Test DataSource"}
  1934  //
  1935  //示例值:
  1936  func (builder *PatchDataSourceReqBodyBuilder) I18nDescription(i18nDescription *I18nMeta) *PatchDataSourceReqBodyBuilder {
  1937  	builder.i18nDescription = i18nDescription
  1938  	builder.i18nDescriptionFlag = true
  1939  	return builder
  1940  }
  1941  
  1942  func (builder *PatchDataSourceReqBodyBuilder) Build() *PatchDataSourceReqBody {
  1943  	req := &PatchDataSourceReqBody{}
  1944  	if builder.nameFlag {
  1945  		req.Name = &builder.name
  1946  	}
  1947  	if builder.stateFlag {
  1948  		req.State = &builder.state
  1949  	}
  1950  	if builder.descriptionFlag {
  1951  		req.Description = &builder.description
  1952  	}
  1953  	if builder.iconUrlFlag {
  1954  		req.IconUrl = &builder.iconUrl
  1955  	}
  1956  	if builder.i18nNameFlag {
  1957  		req.I18nName = builder.i18nName
  1958  	}
  1959  	if builder.i18nDescriptionFlag {
  1960  		req.I18nDescription = builder.i18nDescription
  1961  	}
  1962  	return req
  1963  }
  1964  
  1965  type PatchDataSourcePathReqBodyBuilder struct {
  1966  	name                string // 数据源的展示名称
  1967  	nameFlag            bool
  1968  	state               int // 数据源状态,0-已上线,1-未上线
  1969  	stateFlag           bool
  1970  	description         string // 对于数据源的描述
  1971  	descriptionFlag     bool
  1972  	iconUrl             string // 数据源在 search tab 上的展示图标路径
  1973  	iconUrlFlag         bool
  1974  	i18nName            *I18nMeta // 数据源名称多语言配置,json格式,key为语言locale,value为对应文案,例如{"zh_cn":"测试数据源", "en_us":"Test DataSource"}
  1975  	i18nNameFlag        bool
  1976  	i18nDescription     *I18nMeta // 数据源描述多语言配置,json格式,key为语言locale,value为对应文案,例如{"zh_cn":"搜索测试数据源相关数据", "en_us":"Search data from Test DataSource"}
  1977  	i18nDescriptionFlag bool
  1978  }
  1979  
  1980  func NewPatchDataSourcePathReqBodyBuilder() *PatchDataSourcePathReqBodyBuilder {
  1981  	builder := &PatchDataSourcePathReqBodyBuilder{}
  1982  	return builder
  1983  }
  1984  
  1985  // 数据源的展示名称
  1986  //
  1987  // 示例值:客服工单
  1988  func (builder *PatchDataSourcePathReqBodyBuilder) Name(name string) *PatchDataSourcePathReqBodyBuilder {
  1989  	builder.name = name
  1990  	builder.nameFlag = true
  1991  	return builder
  1992  }
  1993  
  1994  // 数据源状态,0-已上线,1-未上线
  1995  //
  1996  // 示例值:0
  1997  func (builder *PatchDataSourcePathReqBodyBuilder) State(state int) *PatchDataSourcePathReqBodyBuilder {
  1998  	builder.state = state
  1999  	builder.stateFlag = true
  2000  	return builder
  2001  }
  2002  
  2003  // 对于数据源的描述
  2004  //
  2005  // 示例值:搜索客服工单
  2006  func (builder *PatchDataSourcePathReqBodyBuilder) Description(description string) *PatchDataSourcePathReqBodyBuilder {
  2007  	builder.description = description
  2008  	builder.descriptionFlag = true
  2009  	return builder
  2010  }
  2011  
  2012  // 数据源在 search tab 上的展示图标路径
  2013  //
  2014  // 示例值:https://www.xxx.com/open.jpg
  2015  func (builder *PatchDataSourcePathReqBodyBuilder) IconUrl(iconUrl string) *PatchDataSourcePathReqBodyBuilder {
  2016  	builder.iconUrl = iconUrl
  2017  	builder.iconUrlFlag = true
  2018  	return builder
  2019  }
  2020  
  2021  // 数据源名称多语言配置,json格式,key为语言locale,value为对应文案,例如{"zh_cn":"测试数据源", "en_us":"Test DataSource"}
  2022  //
  2023  // 示例值:
  2024  func (builder *PatchDataSourcePathReqBodyBuilder) I18nName(i18nName *I18nMeta) *PatchDataSourcePathReqBodyBuilder {
  2025  	builder.i18nName = i18nName
  2026  	builder.i18nNameFlag = true
  2027  	return builder
  2028  }
  2029  
  2030  // 数据源描述多语言配置,json格式,key为语言locale,value为对应文案,例如{"zh_cn":"搜索测试数据源相关数据", "en_us":"Search data from Test DataSource"}
  2031  //
  2032  // 示例值:
  2033  func (builder *PatchDataSourcePathReqBodyBuilder) I18nDescription(i18nDescription *I18nMeta) *PatchDataSourcePathReqBodyBuilder {
  2034  	builder.i18nDescription = i18nDescription
  2035  	builder.i18nDescriptionFlag = true
  2036  	return builder
  2037  }
  2038  
  2039  func (builder *PatchDataSourcePathReqBodyBuilder) Build() (*PatchDataSourceReqBody, error) {
  2040  	req := &PatchDataSourceReqBody{}
  2041  	if builder.nameFlag {
  2042  		req.Name = &builder.name
  2043  	}
  2044  	if builder.stateFlag {
  2045  		req.State = &builder.state
  2046  	}
  2047  	if builder.descriptionFlag {
  2048  		req.Description = &builder.description
  2049  	}
  2050  	if builder.iconUrlFlag {
  2051  		req.IconUrl = &builder.iconUrl
  2052  	}
  2053  	if builder.i18nNameFlag {
  2054  		req.I18nName = builder.i18nName
  2055  	}
  2056  	if builder.i18nDescriptionFlag {
  2057  		req.I18nDescription = builder.i18nDescription
  2058  	}
  2059  	return req, nil
  2060  }
  2061  
  2062  type PatchDataSourceReqBuilder struct {
  2063  	apiReq *larkcore.ApiReq
  2064  	body   *PatchDataSourceReqBody
  2065  }
  2066  
  2067  func NewPatchDataSourceReqBuilder() *PatchDataSourceReqBuilder {
  2068  	builder := &PatchDataSourceReqBuilder{}
  2069  	builder.apiReq = &larkcore.ApiReq{
  2070  		PathParams:  larkcore.PathParams{},
  2071  		QueryParams: larkcore.QueryParams{},
  2072  	}
  2073  	return builder
  2074  }
  2075  
  2076  // 数据源的唯一标识
  2077  //
  2078  // 示例值:service_ticket
  2079  func (builder *PatchDataSourceReqBuilder) DataSourceId(dataSourceId string) *PatchDataSourceReqBuilder {
  2080  	builder.apiReq.PathParams.Set("data_source_id", fmt.Sprint(dataSourceId))
  2081  	return builder
  2082  }
  2083  
  2084  // 更新一个已经存在的数据源
  2085  func (builder *PatchDataSourceReqBuilder) Body(body *PatchDataSourceReqBody) *PatchDataSourceReqBuilder {
  2086  	builder.body = body
  2087  	return builder
  2088  }
  2089  
  2090  func (builder *PatchDataSourceReqBuilder) Build() *PatchDataSourceReq {
  2091  	req := &PatchDataSourceReq{}
  2092  	req.apiReq = &larkcore.ApiReq{}
  2093  	req.apiReq.PathParams = builder.apiReq.PathParams
  2094  	req.apiReq.Body = builder.body
  2095  	return req
  2096  }
  2097  
  2098  type PatchDataSourceReqBody struct {
  2099  	Name            *string   `json:"name,omitempty"`             // 数据源的展示名称
  2100  	State           *int      `json:"state,omitempty"`            // 数据源状态,0-已上线,1-未上线
  2101  	Description     *string   `json:"description,omitempty"`      // 对于数据源的描述
  2102  	IconUrl         *string   `json:"icon_url,omitempty"`         // 数据源在 search tab 上的展示图标路径
  2103  	I18nName        *I18nMeta `json:"i18n_name,omitempty"`        // 数据源名称多语言配置,json格式,key为语言locale,value为对应文案,例如{"zh_cn":"测试数据源", "en_us":"Test DataSource"}
  2104  	I18nDescription *I18nMeta `json:"i18n_description,omitempty"` // 数据源描述多语言配置,json格式,key为语言locale,value为对应文案,例如{"zh_cn":"搜索测试数据源相关数据", "en_us":"Search data from Test DataSource"}
  2105  }
  2106  
  2107  type PatchDataSourceReq struct {
  2108  	apiReq *larkcore.ApiReq
  2109  	Body   *PatchDataSourceReqBody `body:""`
  2110  }
  2111  
  2112  type PatchDataSourceRespData struct {
  2113  	DataSource *DataSource `json:"data_source,omitempty"` // 数据源
  2114  }
  2115  
  2116  type PatchDataSourceResp struct {
  2117  	*larkcore.ApiResp `json:"-"`
  2118  	larkcore.CodeError
  2119  	Data *PatchDataSourceRespData `json:"data"` // 业务数据
  2120  }
  2121  
  2122  func (resp *PatchDataSourceResp) Success() bool {
  2123  	return resp.Code == 0
  2124  }
  2125  
  2126  type CreateDataSourceItemReqBuilder struct {
  2127  	apiReq *larkcore.ApiReq
  2128  	item   *Item
  2129  }
  2130  
  2131  func NewCreateDataSourceItemReqBuilder() *CreateDataSourceItemReqBuilder {
  2132  	builder := &CreateDataSourceItemReqBuilder{}
  2133  	builder.apiReq = &larkcore.ApiReq{
  2134  		PathParams:  larkcore.PathParams{},
  2135  		QueryParams: larkcore.QueryParams{},
  2136  	}
  2137  	return builder
  2138  }
  2139  
  2140  // 数据源的ID
  2141  //
  2142  // 示例值:service_ticket
  2143  func (builder *CreateDataSourceItemReqBuilder) DataSourceId(dataSourceId string) *CreateDataSourceItemReqBuilder {
  2144  	builder.apiReq.PathParams.Set("data_source_id", fmt.Sprint(dataSourceId))
  2145  	return builder
  2146  }
  2147  
  2148  // 索引一条数据记录
  2149  func (builder *CreateDataSourceItemReqBuilder) Item(item *Item) *CreateDataSourceItemReqBuilder {
  2150  	builder.item = item
  2151  	return builder
  2152  }
  2153  
  2154  func (builder *CreateDataSourceItemReqBuilder) Build() *CreateDataSourceItemReq {
  2155  	req := &CreateDataSourceItemReq{}
  2156  	req.apiReq = &larkcore.ApiReq{}
  2157  	req.apiReq.PathParams = builder.apiReq.PathParams
  2158  	req.apiReq.Body = builder.item
  2159  	return req
  2160  }
  2161  
  2162  type CreateDataSourceItemReq struct {
  2163  	apiReq *larkcore.ApiReq
  2164  	Item   *Item `body:""`
  2165  }
  2166  
  2167  type CreateDataSourceItemResp struct {
  2168  	*larkcore.ApiResp `json:"-"`
  2169  	larkcore.CodeError
  2170  }
  2171  
  2172  func (resp *CreateDataSourceItemResp) Success() bool {
  2173  	return resp.Code == 0
  2174  }
  2175  
  2176  type DeleteDataSourceItemReqBuilder struct {
  2177  	apiReq *larkcore.ApiReq
  2178  }
  2179  
  2180  func NewDeleteDataSourceItemReqBuilder() *DeleteDataSourceItemReqBuilder {
  2181  	builder := &DeleteDataSourceItemReqBuilder{}
  2182  	builder.apiReq = &larkcore.ApiReq{
  2183  		PathParams:  larkcore.PathParams{},
  2184  		QueryParams: larkcore.QueryParams{},
  2185  	}
  2186  	return builder
  2187  }
  2188  
  2189  // 数据源的ID
  2190  //
  2191  // 示例值:service_ticket
  2192  func (builder *DeleteDataSourceItemReqBuilder) DataSourceId(dataSourceId string) *DeleteDataSourceItemReqBuilder {
  2193  	builder.apiReq.PathParams.Set("data_source_id", fmt.Sprint(dataSourceId))
  2194  	return builder
  2195  }
  2196  
  2197  // 数据记录的ID
  2198  //
  2199  // 示例值:01010111
  2200  func (builder *DeleteDataSourceItemReqBuilder) ItemId(itemId string) *DeleteDataSourceItemReqBuilder {
  2201  	builder.apiReq.PathParams.Set("item_id", fmt.Sprint(itemId))
  2202  	return builder
  2203  }
  2204  
  2205  func (builder *DeleteDataSourceItemReqBuilder) Build() *DeleteDataSourceItemReq {
  2206  	req := &DeleteDataSourceItemReq{}
  2207  	req.apiReq = &larkcore.ApiReq{}
  2208  	req.apiReq.PathParams = builder.apiReq.PathParams
  2209  	return req
  2210  }
  2211  
  2212  type DeleteDataSourceItemReq struct {
  2213  	apiReq *larkcore.ApiReq
  2214  }
  2215  
  2216  type DeleteDataSourceItemResp struct {
  2217  	*larkcore.ApiResp `json:"-"`
  2218  	larkcore.CodeError
  2219  }
  2220  
  2221  func (resp *DeleteDataSourceItemResp) Success() bool {
  2222  	return resp.Code == 0
  2223  }
  2224  
  2225  type GetDataSourceItemReqBuilder struct {
  2226  	apiReq *larkcore.ApiReq
  2227  }
  2228  
  2229  func NewGetDataSourceItemReqBuilder() *GetDataSourceItemReqBuilder {
  2230  	builder := &GetDataSourceItemReqBuilder{}
  2231  	builder.apiReq = &larkcore.ApiReq{
  2232  		PathParams:  larkcore.PathParams{},
  2233  		QueryParams: larkcore.QueryParams{},
  2234  	}
  2235  	return builder
  2236  }
  2237  
  2238  // 数据源的id
  2239  //
  2240  // 示例值:service_ticket
  2241  func (builder *GetDataSourceItemReqBuilder) DataSourceId(dataSourceId string) *GetDataSourceItemReqBuilder {
  2242  	builder.apiReq.PathParams.Set("data_source_id", fmt.Sprint(dataSourceId))
  2243  	return builder
  2244  }
  2245  
  2246  // 数据记录的唯一标识
  2247  //
  2248  // 示例值:01010111
  2249  func (builder *GetDataSourceItemReqBuilder) ItemId(itemId string) *GetDataSourceItemReqBuilder {
  2250  	builder.apiReq.PathParams.Set("item_id", fmt.Sprint(itemId))
  2251  	return builder
  2252  }
  2253  
  2254  func (builder *GetDataSourceItemReqBuilder) Build() *GetDataSourceItemReq {
  2255  	req := &GetDataSourceItemReq{}
  2256  	req.apiReq = &larkcore.ApiReq{}
  2257  	req.apiReq.PathParams = builder.apiReq.PathParams
  2258  	return req
  2259  }
  2260  
  2261  type GetDataSourceItemReq struct {
  2262  	apiReq *larkcore.ApiReq
  2263  }
  2264  
  2265  type GetDataSourceItemRespData struct {
  2266  	Item *Item `json:"item,omitempty"` // 数据项实例
  2267  }
  2268  
  2269  type GetDataSourceItemResp struct {
  2270  	*larkcore.ApiResp `json:"-"`
  2271  	larkcore.CodeError
  2272  	Data *GetDataSourceItemRespData `json:"data"` // 业务数据
  2273  }
  2274  
  2275  func (resp *GetDataSourceItemResp) Success() bool {
  2276  	return resp.Code == 0
  2277  }
  2278  
  2279  type CreateSchemaReqBuilder struct {
  2280  	apiReq *larkcore.ApiReq
  2281  	schema *Schema
  2282  }
  2283  
  2284  func NewCreateSchemaReqBuilder() *CreateSchemaReqBuilder {
  2285  	builder := &CreateSchemaReqBuilder{}
  2286  	builder.apiReq = &larkcore.ApiReq{
  2287  		PathParams:  larkcore.PathParams{},
  2288  		QueryParams: larkcore.QueryParams{},
  2289  	}
  2290  	return builder
  2291  }
  2292  
  2293  // 是否只用来校验合法性
  2294  //
  2295  // 示例值:true
  2296  func (builder *CreateSchemaReqBuilder) ValidateOnly(validateOnly bool) *CreateSchemaReqBuilder {
  2297  	builder.apiReq.QueryParams.Set("validate_only", fmt.Sprint(validateOnly))
  2298  	return builder
  2299  }
  2300  
  2301  // 创建一个数据源
  2302  func (builder *CreateSchemaReqBuilder) Schema(schema *Schema) *CreateSchemaReqBuilder {
  2303  	builder.schema = schema
  2304  	return builder
  2305  }
  2306  
  2307  func (builder *CreateSchemaReqBuilder) Build() *CreateSchemaReq {
  2308  	req := &CreateSchemaReq{}
  2309  	req.apiReq = &larkcore.ApiReq{}
  2310  	req.apiReq.QueryParams = builder.apiReq.QueryParams
  2311  	req.apiReq.Body = builder.schema
  2312  	return req
  2313  }
  2314  
  2315  type CreateSchemaReq struct {
  2316  	apiReq *larkcore.ApiReq
  2317  	Schema *Schema `body:""`
  2318  }
  2319  
  2320  type CreateSchemaRespData struct {
  2321  	Schema *Schema `json:"schema,omitempty"` // 数据范式实例
  2322  }
  2323  
  2324  type CreateSchemaResp struct {
  2325  	*larkcore.ApiResp `json:"-"`
  2326  	larkcore.CodeError
  2327  	Data *CreateSchemaRespData `json:"data"` // 业务数据
  2328  }
  2329  
  2330  func (resp *CreateSchemaResp) Success() bool {
  2331  	return resp.Code == 0
  2332  }
  2333  
  2334  type DeleteSchemaReqBuilder struct {
  2335  	apiReq *larkcore.ApiReq
  2336  }
  2337  
  2338  func NewDeleteSchemaReqBuilder() *DeleteSchemaReqBuilder {
  2339  	builder := &DeleteSchemaReqBuilder{}
  2340  	builder.apiReq = &larkcore.ApiReq{
  2341  		PathParams:  larkcore.PathParams{},
  2342  		QueryParams: larkcore.QueryParams{},
  2343  	}
  2344  	return builder
  2345  }
  2346  
  2347  // 用户自定义数据范式的唯一标识
  2348  //
  2349  // 示例值:custom_schema_id
  2350  func (builder *DeleteSchemaReqBuilder) SchemaId(schemaId string) *DeleteSchemaReqBuilder {
  2351  	builder.apiReq.PathParams.Set("schema_id", fmt.Sprint(schemaId))
  2352  	return builder
  2353  }
  2354  
  2355  func (builder *DeleteSchemaReqBuilder) Build() *DeleteSchemaReq {
  2356  	req := &DeleteSchemaReq{}
  2357  	req.apiReq = &larkcore.ApiReq{}
  2358  	req.apiReq.PathParams = builder.apiReq.PathParams
  2359  	return req
  2360  }
  2361  
  2362  type DeleteSchemaReq struct {
  2363  	apiReq *larkcore.ApiReq
  2364  }
  2365  
  2366  type DeleteSchemaResp struct {
  2367  	*larkcore.ApiResp `json:"-"`
  2368  	larkcore.CodeError
  2369  }
  2370  
  2371  func (resp *DeleteSchemaResp) Success() bool {
  2372  	return resp.Code == 0
  2373  }
  2374  
  2375  type GetSchemaReqBuilder struct {
  2376  	apiReq *larkcore.ApiReq
  2377  }
  2378  
  2379  func NewGetSchemaReqBuilder() *GetSchemaReqBuilder {
  2380  	builder := &GetSchemaReqBuilder{}
  2381  	builder.apiReq = &larkcore.ApiReq{
  2382  		PathParams:  larkcore.PathParams{},
  2383  		QueryParams: larkcore.QueryParams{},
  2384  	}
  2385  	return builder
  2386  }
  2387  
  2388  // 用户自定义数据范式的唯一标识
  2389  //
  2390  // 示例值:custom_schema_id
  2391  func (builder *GetSchemaReqBuilder) SchemaId(schemaId string) *GetSchemaReqBuilder {
  2392  	builder.apiReq.PathParams.Set("schema_id", fmt.Sprint(schemaId))
  2393  	return builder
  2394  }
  2395  
  2396  func (builder *GetSchemaReqBuilder) Build() *GetSchemaReq {
  2397  	req := &GetSchemaReq{}
  2398  	req.apiReq = &larkcore.ApiReq{}
  2399  	req.apiReq.PathParams = builder.apiReq.PathParams
  2400  	return req
  2401  }
  2402  
  2403  type GetSchemaReq struct {
  2404  	apiReq *larkcore.ApiReq
  2405  }
  2406  
  2407  type GetSchemaRespData struct {
  2408  	Schema *Schema `json:"schema,omitempty"` // 数据范式
  2409  }
  2410  
  2411  type GetSchemaResp struct {
  2412  	*larkcore.ApiResp `json:"-"`
  2413  	larkcore.CodeError
  2414  	Data *GetSchemaRespData `json:"data"` // 业务数据
  2415  }
  2416  
  2417  func (resp *GetSchemaResp) Success() bool {
  2418  	return resp.Code == 0
  2419  }
  2420  
  2421  type PatchSchemaReqBodyBuilder struct {
  2422  	display     *SchemaDisplay // 数据展示相关配置
  2423  	displayFlag bool
  2424  }
  2425  
  2426  func NewPatchSchemaReqBodyBuilder() *PatchSchemaReqBodyBuilder {
  2427  	builder := &PatchSchemaReqBodyBuilder{}
  2428  	return builder
  2429  }
  2430  
  2431  // 数据展示相关配置
  2432  //
  2433  //示例值:
  2434  func (builder *PatchSchemaReqBodyBuilder) Display(display *SchemaDisplay) *PatchSchemaReqBodyBuilder {
  2435  	builder.display = display
  2436  	builder.displayFlag = true
  2437  	return builder
  2438  }
  2439  
  2440  func (builder *PatchSchemaReqBodyBuilder) Build() *PatchSchemaReqBody {
  2441  	req := &PatchSchemaReqBody{}
  2442  	if builder.displayFlag {
  2443  		req.Display = builder.display
  2444  	}
  2445  	return req
  2446  }
  2447  
  2448  type PatchSchemaPathReqBodyBuilder struct {
  2449  	display     *SchemaDisplay // 数据展示相关配置
  2450  	displayFlag bool
  2451  }
  2452  
  2453  func NewPatchSchemaPathReqBodyBuilder() *PatchSchemaPathReqBodyBuilder {
  2454  	builder := &PatchSchemaPathReqBodyBuilder{}
  2455  	return builder
  2456  }
  2457  
  2458  // 数据展示相关配置
  2459  //
  2460  // 示例值:
  2461  func (builder *PatchSchemaPathReqBodyBuilder) Display(display *SchemaDisplay) *PatchSchemaPathReqBodyBuilder {
  2462  	builder.display = display
  2463  	builder.displayFlag = true
  2464  	return builder
  2465  }
  2466  
  2467  func (builder *PatchSchemaPathReqBodyBuilder) Build() (*PatchSchemaReqBody, error) {
  2468  	req := &PatchSchemaReqBody{}
  2469  	if builder.displayFlag {
  2470  		req.Display = builder.display
  2471  	}
  2472  	return req, nil
  2473  }
  2474  
  2475  type PatchSchemaReqBuilder struct {
  2476  	apiReq *larkcore.ApiReq
  2477  	body   *PatchSchemaReqBody
  2478  }
  2479  
  2480  func NewPatchSchemaReqBuilder() *PatchSchemaReqBuilder {
  2481  	builder := &PatchSchemaReqBuilder{}
  2482  	builder.apiReq = &larkcore.ApiReq{
  2483  		PathParams:  larkcore.PathParams{},
  2484  		QueryParams: larkcore.QueryParams{},
  2485  	}
  2486  	return builder
  2487  }
  2488  
  2489  // 用户自定义数据范式的唯一标识
  2490  //
  2491  // 示例值:custom_schema_id
  2492  func (builder *PatchSchemaReqBuilder) SchemaId(schemaId string) *PatchSchemaReqBuilder {
  2493  	builder.apiReq.PathParams.Set("schema_id", fmt.Sprint(schemaId))
  2494  	return builder
  2495  }
  2496  
  2497  // 修改数据范式
  2498  func (builder *PatchSchemaReqBuilder) Body(body *PatchSchemaReqBody) *PatchSchemaReqBuilder {
  2499  	builder.body = body
  2500  	return builder
  2501  }
  2502  
  2503  func (builder *PatchSchemaReqBuilder) Build() *PatchSchemaReq {
  2504  	req := &PatchSchemaReq{}
  2505  	req.apiReq = &larkcore.ApiReq{}
  2506  	req.apiReq.PathParams = builder.apiReq.PathParams
  2507  	req.apiReq.Body = builder.body
  2508  	return req
  2509  }
  2510  
  2511  type PatchSchemaReqBody struct {
  2512  	Display *SchemaDisplay `json:"display,omitempty"` // 数据展示相关配置
  2513  }
  2514  
  2515  type PatchSchemaReq struct {
  2516  	apiReq *larkcore.ApiReq
  2517  	Body   *PatchSchemaReqBody `body:""`
  2518  }
  2519  
  2520  type PatchSchemaRespData struct {
  2521  	Schema *Schema `json:"schema,omitempty"` // 数据范式实例
  2522  }
  2523  
  2524  type PatchSchemaResp struct {
  2525  	*larkcore.ApiResp `json:"-"`
  2526  	larkcore.CodeError
  2527  	Data *PatchSchemaRespData `json:"data"` // 业务数据
  2528  }
  2529  
  2530  func (resp *PatchSchemaResp) Success() bool {
  2531  	return resp.Code == 0
  2532  }
  2533  
  2534  type ListDataSourceIterator struct {
  2535  	nextPageToken *string
  2536  	items         []*DataSource
  2537  	index         int
  2538  	limit         int
  2539  	ctx           context.Context
  2540  	req           *ListDataSourceReq
  2541  	listFunc      func(ctx context.Context, req *ListDataSourceReq, options ...larkcore.RequestOptionFunc) (*ListDataSourceResp, error)
  2542  	options       []larkcore.RequestOptionFunc
  2543  	curlNum       int
  2544  }
  2545  
  2546  func (iterator *ListDataSourceIterator) Next() (bool, *DataSource, error) {
  2547  	// 达到最大量,则返回
  2548  	if iterator.limit > 0 && iterator.curlNum >= iterator.limit {
  2549  		return false, nil, nil
  2550  	}
  2551  
  2552  	// 为0则拉取数据
  2553  	if iterator.index == 0 || iterator.index >= len(iterator.items) {
  2554  		if iterator.index != 0 && iterator.nextPageToken == nil {
  2555  			return false, nil, nil
  2556  		}
  2557  		if iterator.nextPageToken != nil {
  2558  			iterator.req.apiReq.QueryParams.Set("page_token", *iterator.nextPageToken)
  2559  		}
  2560  		resp, err := iterator.listFunc(iterator.ctx, iterator.req, iterator.options...)
  2561  		if err != nil {
  2562  			return false, nil, err
  2563  		}
  2564  
  2565  		if resp.Code != 0 {
  2566  			return false, nil, errors.New(fmt.Sprintf("Code:%d,Msg:%s", resp.Code, resp.Msg))
  2567  		}
  2568  
  2569  		if len(resp.Data.Items) == 0 {
  2570  			return false, nil, nil
  2571  		}
  2572  
  2573  		iterator.nextPageToken = resp.Data.PageToken
  2574  		iterator.items = resp.Data.Items
  2575  		iterator.index = 0
  2576  	}
  2577  
  2578  	block := iterator.items[iterator.index]
  2579  	iterator.index++
  2580  	iterator.curlNum++
  2581  	return true, block, nil
  2582  }
  2583  
  2584  func (iterator *ListDataSourceIterator) NextPageToken() *string {
  2585  	return iterator.nextPageToken
  2586  }