// Copyright 2025 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// 	protoc-gen-go v1.36.11
// 	protoc        v6.33.2
// source: google/cloud/aiplatform/v1/feature_group.proto

package aiplatformpb

import (
	reflect "reflect"
	sync "sync"
	unsafe "unsafe"

	_ "google.golang.org/genproto/googleapis/api/annotations"
	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
	timestamppb "google.golang.org/protobuf/types/known/timestamppb"
)

const (
	// Verify that this generated code is sufficiently up-to-date.
	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
	// Verify that runtime/protoimpl is sufficiently up-to-date.
	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
)

// Vertex AI Feature Group.
type FeatureGroup struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Types that are valid to be assigned to Source:
	//
	//	*FeatureGroup_BigQuery_
	Source isFeatureGroup_Source `protobuf_oneof:"source"`
	// Identifier. Name of the FeatureGroup. Format:
	// `projects/{project}/locations/{location}/featureGroups/{featureGroup}`
	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	// Output only. Timestamp when this FeatureGroup was created.
	CreateTime *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty"`
	// Output only. Timestamp when this FeatureGroup was last updated.
	UpdateTime *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=update_time,json=updateTime,proto3" json:"update_time,omitempty"`
	// Optional. Used to perform consistent read-modify-write updates. If not set,
	// a blind "overwrite" update happens.
	Etag string `protobuf:"bytes,4,opt,name=etag,proto3" json:"etag,omitempty"`
	// Optional. The labels with user-defined metadata to organize your
	// FeatureGroup.
	//
	// Label keys and values can be no longer than 64 characters
	// (Unicode codepoints), can only contain lowercase letters, numeric
	// characters, underscores and dashes. International characters are allowed.
	//
	// See https://goo.gl/xmQnxf for more information on and examples of labels.
	// No more than 64 user labels can be associated with one
	// FeatureGroup(System labels are excluded)." System reserved label keys
	// are prefixed with "aiplatform.googleapis.com/" and are immutable.
	Labels map[string]string `protobuf:"bytes,5,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	// Optional. Description of the FeatureGroup.
	Description   string `protobuf:"bytes,6,opt,name=description,proto3" json:"description,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *FeatureGroup) Reset() {
	*x = FeatureGroup{}
	mi := &file_google_cloud_aiplatform_v1_feature_group_proto_msgTypes[0]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *FeatureGroup) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*FeatureGroup) ProtoMessage() {}

func (x *FeatureGroup) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_aiplatform_v1_feature_group_proto_msgTypes[0]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use FeatureGroup.ProtoReflect.Descriptor instead.
func (*FeatureGroup) Descriptor() ([]byte, []int) {
	return file_google_cloud_aiplatform_v1_feature_group_proto_rawDescGZIP(), []int{0}
}

func (x *FeatureGroup) GetSource() isFeatureGroup_Source {
	if x != nil {
		return x.Source
	}
	return nil
}

func (x *FeatureGroup) GetBigQuery() *FeatureGroup_BigQuery {
	if x != nil {
		if x, ok := x.Source.(*FeatureGroup_BigQuery_); ok {
			return x.BigQuery
		}
	}
	return nil
}

func (x *FeatureGroup) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

func (x *FeatureGroup) GetCreateTime() *timestamppb.Timestamp {
	if x != nil {
		return x.CreateTime
	}
	return nil
}

func (x *FeatureGroup) GetUpdateTime() *timestamppb.Timestamp {
	if x != nil {
		return x.UpdateTime
	}
	return nil
}

func (x *FeatureGroup) GetEtag() string {
	if x != nil {
		return x.Etag
	}
	return ""
}

func (x *FeatureGroup) GetLabels() map[string]string {
	if x != nil {
		return x.Labels
	}
	return nil
}

func (x *FeatureGroup) GetDescription() string {
	if x != nil {
		return x.Description
	}
	return ""
}

type isFeatureGroup_Source interface {
	isFeatureGroup_Source()
}

type FeatureGroup_BigQuery_ struct {
	// Indicates that features for this group come from BigQuery Table/View.
	// By default treats the source as a sparse time series source. The BigQuery
	// source table or view must have at least one entity ID column and a column
	// named `feature_timestamp`.
	BigQuery *FeatureGroup_BigQuery `protobuf:"bytes,7,opt,name=big_query,json=bigQuery,proto3,oneof"`
}

func (*FeatureGroup_BigQuery_) isFeatureGroup_Source() {}

// Input source type for BigQuery Tables and Views.
type FeatureGroup_BigQuery struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Required. Immutable. The BigQuery source URI that points to either a
	// BigQuery Table or View.
	BigQuerySource *BigQuerySource `protobuf:"bytes,1,opt,name=big_query_source,json=bigQuerySource,proto3" json:"big_query_source,omitempty"`
	// Optional. Columns to construct entity_id / row keys.
	// If not provided defaults to `entity_id`.
	EntityIdColumns []string `protobuf:"bytes,2,rep,name=entity_id_columns,json=entityIdColumns,proto3" json:"entity_id_columns,omitempty"`
	// Optional. Set if the data source is not a time-series.
	StaticDataSource bool `protobuf:"varint,3,opt,name=static_data_source,json=staticDataSource,proto3" json:"static_data_source,omitempty"`
	// Optional. If the source is a time-series source, this can be set to
	// control how downstream sources (ex:
	// [FeatureView][google.cloud.aiplatform.v1.FeatureView] ) will treat
	// time-series sources. If not set, will treat the source as a time-series
	// source with `feature_timestamp` as timestamp column and no scan boundary.
	TimeSeries *FeatureGroup_BigQuery_TimeSeries `protobuf:"bytes,4,opt,name=time_series,json=timeSeries,proto3" json:"time_series,omitempty"`
	// Optional. If set, all feature values will be fetched
	// from a single row per unique entityId including nulls.
	// If not set, will collapse all rows for each unique entityId into a singe
	// row with any non-null values if present, if no non-null values are
	// present will sync null.
	// ex: If source has schema
	// `(entity_id, feature_timestamp, f0, f1)` and the following rows:
	// `(e1, 2020-01-01T10:00:00.123Z, 10, 15)`
	// `(e1, 2020-02-01T10:00:00.123Z, 20, null)`
	// If dense is set, `(e1, 20, null)` is synced to online stores. If dense is
	// not set, `(e1, 20, 15)` is synced to online stores.
	Dense         bool `protobuf:"varint,5,opt,name=dense,proto3" json:"dense,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *FeatureGroup_BigQuery) Reset() {
	*x = FeatureGroup_BigQuery{}
	mi := &file_google_cloud_aiplatform_v1_feature_group_proto_msgTypes[1]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *FeatureGroup_BigQuery) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*FeatureGroup_BigQuery) ProtoMessage() {}

func (x *FeatureGroup_BigQuery) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_aiplatform_v1_feature_group_proto_msgTypes[1]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use FeatureGroup_BigQuery.ProtoReflect.Descriptor instead.
func (*FeatureGroup_BigQuery) Descriptor() ([]byte, []int) {
	return file_google_cloud_aiplatform_v1_feature_group_proto_rawDescGZIP(), []int{0, 0}
}

func (x *FeatureGroup_BigQuery) GetBigQuerySource() *BigQuerySource {
	if x != nil {
		return x.BigQuerySource
	}
	return nil
}

func (x *FeatureGroup_BigQuery) GetEntityIdColumns() []string {
	if x != nil {
		return x.EntityIdColumns
	}
	return nil
}

func (x *FeatureGroup_BigQuery) GetStaticDataSource() bool {
	if x != nil {
		return x.StaticDataSource
	}
	return false
}

func (x *FeatureGroup_BigQuery) GetTimeSeries() *FeatureGroup_BigQuery_TimeSeries {
	if x != nil {
		return x.TimeSeries
	}
	return nil
}

func (x *FeatureGroup_BigQuery) GetDense() bool {
	if x != nil {
		return x.Dense
	}
	return false
}

type FeatureGroup_BigQuery_TimeSeries struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Optional. Column hosting timestamp values for a time-series source.
	// Will be used to determine the latest `feature_values` for each entity.
	// Optional. If not provided, column named `feature_timestamp` of
	// type `TIMESTAMP` will be used.
	TimestampColumn string `protobuf:"bytes,1,opt,name=timestamp_column,json=timestampColumn,proto3" json:"timestamp_column,omitempty"`
	unknownFields   protoimpl.UnknownFields
	sizeCache       protoimpl.SizeCache
}

func (x *FeatureGroup_BigQuery_TimeSeries) Reset() {
	*x = FeatureGroup_BigQuery_TimeSeries{}
	mi := &file_google_cloud_aiplatform_v1_feature_group_proto_msgTypes[3]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *FeatureGroup_BigQuery_TimeSeries) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*FeatureGroup_BigQuery_TimeSeries) ProtoMessage() {}

func (x *FeatureGroup_BigQuery_TimeSeries) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_aiplatform_v1_feature_group_proto_msgTypes[3]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use FeatureGroup_BigQuery_TimeSeries.ProtoReflect.Descriptor instead.
func (*FeatureGroup_BigQuery_TimeSeries) Descriptor() ([]byte, []int) {
	return file_google_cloud_aiplatform_v1_feature_group_proto_rawDescGZIP(), []int{0, 0, 0}
}

func (x *FeatureGroup_BigQuery_TimeSeries) GetTimestampColumn() string {
	if x != nil {
		return x.TimestampColumn
	}
	return ""
}

var File_google_cloud_aiplatform_v1_feature_group_proto protoreflect.FileDescriptor

const file_google_cloud_aiplatform_v1_feature_group_proto_rawDesc = "" +
	"\n" +
	".google/cloud/aiplatform/v1/feature_group.proto\x12\x1agoogle.cloud.aiplatform.v1\x1a\x1fgoogle/api/field_behavior.proto\x1a\x19google/api/resource.proto\x1a#google/cloud/aiplatform/v1/io.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"\xf4\a\n" +
	"\fFeatureGroup\x12P\n" +
	"\tbig_query\x18\a \x01(\v21.google.cloud.aiplatform.v1.FeatureGroup.BigQueryH\x00R\bbigQuery\x12\x17\n" +
	"\x04name\x18\x01 \x01(\tB\x03\xe0A\bR\x04name\x12@\n" +
	"\vcreate_time\x18\x02 \x01(\v2\x1a.google.protobuf.TimestampB\x03\xe0A\x03R\n" +
	"createTime\x12@\n" +
	"\vupdate_time\x18\x03 \x01(\v2\x1a.google.protobuf.TimestampB\x03\xe0A\x03R\n" +
	"updateTime\x12\x17\n" +
	"\x04etag\x18\x04 \x01(\tB\x03\xe0A\x01R\x04etag\x12Q\n" +
	"\x06labels\x18\x05 \x03(\v24.google.cloud.aiplatform.v1.FeatureGroup.LabelsEntryB\x03\xe0A\x01R\x06labels\x12%\n" +
	"\vdescription\x18\x06 \x01(\tB\x03\xe0A\x01R\vdescription\x1a\x89\x03\n" +
	"\bBigQuery\x12\\\n" +
	"\x10big_query_source\x18\x01 \x01(\v2*.google.cloud.aiplatform.v1.BigQuerySourceB\x06\xe0A\x05\xe0A\x02R\x0ebigQuerySource\x12/\n" +
	"\x11entity_id_columns\x18\x02 \x03(\tB\x03\xe0A\x01R\x0fentityIdColumns\x121\n" +
	"\x12static_data_source\x18\x03 \x01(\bB\x03\xe0A\x01R\x10staticDataSource\x12b\n" +
	"\vtime_series\x18\x04 \x01(\v2<.google.cloud.aiplatform.v1.FeatureGroup.BigQuery.TimeSeriesB\x03\xe0A\x01R\n" +
	"timeSeries\x12\x19\n" +
	"\x05dense\x18\x05 \x01(\bB\x03\xe0A\x01R\x05dense\x1a<\n" +
	"\n" +
	"TimeSeries\x12.\n" +
	"\x10timestamp_column\x18\x01 \x01(\tB\x03\xe0A\x01R\x0ftimestampColumn\x1a9\n" +
	"\vLabelsEntry\x12\x10\n" +
	"\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" +
	"\x05value\x18\x02 \x01(\tR\x05value:\x028\x01:\x90\x01\xeaA\x8c\x01\n" +
	"&aiplatform.googleapis.com/FeatureGroup\x12Eprojects/{project}/locations/{location}/featureGroups/{feature_group}*\rfeatureGroups2\ffeatureGroupB\b\n" +
	"\x06sourceB\xcf\x01\n" +
	"\x1ecom.google.cloud.aiplatform.v1B\x11FeatureGroupProtoP\x01Z>cloud.google.com/go/aiplatform/apiv1/aiplatformpb;aiplatformpb\xaa\x02\x1aGoogle.Cloud.AIPlatform.V1\xca\x02\x1aGoogle\\Cloud\\AIPlatform\\V1\xea\x02\x1dGoogle::Cloud::AIPlatform::V1b\x06proto3"

var (
	file_google_cloud_aiplatform_v1_feature_group_proto_rawDescOnce sync.Once
	file_google_cloud_aiplatform_v1_feature_group_proto_rawDescData []byte
)

func file_google_cloud_aiplatform_v1_feature_group_proto_rawDescGZIP() []byte {
	file_google_cloud_aiplatform_v1_feature_group_proto_rawDescOnce.Do(func() {
		file_google_cloud_aiplatform_v1_feature_group_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_google_cloud_aiplatform_v1_feature_group_proto_rawDesc), len(file_google_cloud_aiplatform_v1_feature_group_proto_rawDesc)))
	})
	return file_google_cloud_aiplatform_v1_feature_group_proto_rawDescData
}

var file_google_cloud_aiplatform_v1_feature_group_proto_msgTypes = make([]protoimpl.MessageInfo, 4)
var file_google_cloud_aiplatform_v1_feature_group_proto_goTypes = []any{
	(*FeatureGroup)(nil),                     // 0: google.cloud.aiplatform.v1.FeatureGroup
	(*FeatureGroup_BigQuery)(nil),            // 1: google.cloud.aiplatform.v1.FeatureGroup.BigQuery
	nil,                                      // 2: google.cloud.aiplatform.v1.FeatureGroup.LabelsEntry
	(*FeatureGroup_BigQuery_TimeSeries)(nil), // 3: google.cloud.aiplatform.v1.FeatureGroup.BigQuery.TimeSeries
	(*timestamppb.Timestamp)(nil),            // 4: google.protobuf.Timestamp
	(*BigQuerySource)(nil),                   // 5: google.cloud.aiplatform.v1.BigQuerySource
}
var file_google_cloud_aiplatform_v1_feature_group_proto_depIdxs = []int32{
	1, // 0: google.cloud.aiplatform.v1.FeatureGroup.big_query:type_name -> google.cloud.aiplatform.v1.FeatureGroup.BigQuery
	4, // 1: google.cloud.aiplatform.v1.FeatureGroup.create_time:type_name -> google.protobuf.Timestamp
	4, // 2: google.cloud.aiplatform.v1.FeatureGroup.update_time:type_name -> google.protobuf.Timestamp
	2, // 3: google.cloud.aiplatform.v1.FeatureGroup.labels:type_name -> google.cloud.aiplatform.v1.FeatureGroup.LabelsEntry
	5, // 4: google.cloud.aiplatform.v1.FeatureGroup.BigQuery.big_query_source:type_name -> google.cloud.aiplatform.v1.BigQuerySource
	3, // 5: google.cloud.aiplatform.v1.FeatureGroup.BigQuery.time_series:type_name -> google.cloud.aiplatform.v1.FeatureGroup.BigQuery.TimeSeries
	6, // [6:6] is the sub-list for method output_type
	6, // [6:6] is the sub-list for method input_type
	6, // [6:6] is the sub-list for extension type_name
	6, // [6:6] is the sub-list for extension extendee
	0, // [0:6] is the sub-list for field type_name
}

func init() { file_google_cloud_aiplatform_v1_feature_group_proto_init() }
func file_google_cloud_aiplatform_v1_feature_group_proto_init() {
	if File_google_cloud_aiplatform_v1_feature_group_proto != nil {
		return
	}
	file_google_cloud_aiplatform_v1_io_proto_init()
	file_google_cloud_aiplatform_v1_feature_group_proto_msgTypes[0].OneofWrappers = []any{
		(*FeatureGroup_BigQuery_)(nil),
	}
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: unsafe.Slice(unsafe.StringData(file_google_cloud_aiplatform_v1_feature_group_proto_rawDesc), len(file_google_cloud_aiplatform_v1_feature_group_proto_rawDesc)),
			NumEnums:      0,
			NumMessages:   4,
			NumExtensions: 0,
			NumServices:   0,
		},
		GoTypes:           file_google_cloud_aiplatform_v1_feature_group_proto_goTypes,
		DependencyIndexes: file_google_cloud_aiplatform_v1_feature_group_proto_depIdxs,
		MessageInfos:      file_google_cloud_aiplatform_v1_feature_group_proto_msgTypes,
	}.Build()
	File_google_cloud_aiplatform_v1_feature_group_proto = out.File
	file_google_cloud_aiplatform_v1_feature_group_proto_goTypes = nil
	file_google_cloud_aiplatform_v1_feature_group_proto_depIdxs = nil
}
