//
// * Copyright 2020 The Feast Authors
// *
// * 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
// *
// *     https://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.
//

syntax = "proto3";

package feast.core;
option java_package = "feast.proto.core";
option java_outer_classname = "RegistryProto";
option go_package = "github.com/feast-dev/feast/go/protos/feast/core";

import "feast/core/Entity.proto";
import "feast/core/FeatureService.proto";
import "feast/core/FeatureTable.proto";
import "feast/core/FeatureView.proto";
import "feast/core/InfraObject.proto";
import "feast/core/OnDemandFeatureView.proto";
import "feast/core/RequestFeatureView.proto";
import "feast/core/StreamFeatureView.proto";
import "feast/core/DataSource.proto";
import "feast/core/SavedDataset.proto";
import "feast/core/ValidationProfile.proto";
import "google/protobuf/timestamp.proto";

// Next id: 16
message Registry {
    repeated Entity entities = 1;
    repeated FeatureTable feature_tables = 2;
    repeated FeatureView feature_views = 6;
    repeated DataSource data_sources = 12;
    repeated OnDemandFeatureView on_demand_feature_views = 8;
    repeated RequestFeatureView request_feature_views = 9;
    repeated StreamFeatureView stream_feature_views = 14;
    repeated FeatureService feature_services = 7;
    repeated SavedDataset saved_datasets = 11;
    repeated ValidationReference validation_references = 13;
    Infra infra = 10;
    // Tracking metadata of Feast by project
    repeated ProjectMetadata project_metadata = 15;

    string registry_schema_version = 3; // to support migrations; incremented when schema is changed
    string version_id = 4; // version id, random string generated on each update of the data; now used only for debugging purposes
    google.protobuf.Timestamp last_updated = 5;
}

message ProjectMetadata {
    string project = 1;
    string project_uuid = 2;
}
