odps/options/sql_options.go (104 lines of code) (raw):
package options
// CreateInstanceOptions holds the configuration for creating an instance.
type CreateInstanceOptions struct {
Priority int
JobName string // Job name
TryWait bool // Try wait flag
UniqueIdentifyID string // Unique identification ID
MaxQAOptions struct {
UseMaxQA bool
QuotaName string
SessionID string
}
}
type CreateInstanceOption func(*CreateInstanceOptions)
// NewCreateInstanceOptions initializes a new instance of CreateInstanceOptions.
func NewCreateInstanceOptions(opts ...CreateInstanceOption) *CreateInstanceOptions {
o := &CreateInstanceOptions{}
for _, opt := range opts {
opt(o)
}
return o
}
func WithPriority(priority int) CreateInstanceOption {
return func(o *CreateInstanceOptions) {
o.Priority = priority
}
}
func WithUniqueIdentifyID(uniqueIdentifyID string) CreateInstanceOption {
return func(o *CreateInstanceOptions) {
o.UniqueIdentifyID = uniqueIdentifyID
}
}
func WithJobName(jobName string) CreateInstanceOption {
return func(o *CreateInstanceOptions) {
o.JobName = jobName
}
}
func WithTryWait(tryWait bool) CreateInstanceOption {
return func(o *CreateInstanceOptions) {
o.TryWait = tryWait
}
}
func WithMaxQAOptions(sessionID string, quotaName string) CreateInstanceOption {
return func(o *CreateInstanceOptions) {
o.MaxQAOptions.UseMaxQA = true
o.MaxQAOptions.QuotaName = quotaName
o.MaxQAOptions.SessionID = sessionID
}
}
// SQLTaskOptions holds the configuration for creating a SQLTask.
type SQLTaskOptions struct {
TaskName string
InstanceOption *CreateInstanceOptions // Pointer to handle nil
Hints map[string]string
Aliases map[string]string
Type string
DefaultSchema string // Hint of "odps.default.schema" has a higher priority than this one
}
type SQLTaskOption func(*SQLTaskOptions)
// NewSQLTaskOptions initializes a new instance of SQLTaskOptions with default values.
func NewSQLTaskOptions(opts ...SQLTaskOption) *SQLTaskOptions {
options := &SQLTaskOptions{
TaskName: "AnonymousSQLTask",
Type: "sql",
Hints: make(map[string]string),
Aliases: make(map[string]string),
}
for _, opt := range opts {
opt(options)
}
return options
}
func WithTaskName(name string) SQLTaskOption {
return func(o *SQLTaskOptions) {
o.TaskName = name
}
}
func WithType(t string) SQLTaskOption {
return func(o *SQLTaskOptions) {
o.Type = t
}
}
func WithDefaultSchema(schema string) SQLTaskOption {
return func(o *SQLTaskOptions) {
o.DefaultSchema = schema
}
}
func WithHints(hints map[string]string) SQLTaskOption {
return func(o *SQLTaskOptions) {
o.Hints = make(map[string]string)
for k, v := range hints {
o.Hints[k] = v
}
}
}
func WithAliases(aliases map[string]string) SQLTaskOption {
return func(o *SQLTaskOptions) {
o.Aliases = make(map[string]string)
for k, v := range aliases {
o.Aliases[k] = v
}
}
}
func WithInstanceOption(opts ...CreateInstanceOption) SQLTaskOption {
return func(o *SQLTaskOptions) {
o.InstanceOption = NewCreateInstanceOptions(opts...)
}
}