//
// * Copyright 2021 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 = "InfraObjectProto";
option go_package = "github.com/feast-dev/feast/go/protos/feast/core";

import "feast/core/DatastoreTable.proto";
import "feast/core/DynamoDBTable.proto";
import "feast/core/SqliteTable.proto";

// Represents a set of infrastructure objects managed by Feast
message Infra {
    // List of infrastructure objects managed by Feast
    repeated InfraObject infra_objects = 1;
}

// Represents a single infrastructure object managed by Feast
message InfraObject {
    // Represents the Python class for the infrastructure object
    string infra_object_class_type = 1;

    // The infrastructure object
    oneof infra_object {
        DynamoDBTable dynamodb_table = 2;
        DatastoreTable datastore_table = 3;
        SqliteTable sqlite_table = 4;
        CustomInfra custom_infra = 100;
    }

    // Allows for custom infra objects to be added
    message CustomInfra {
        bytes field = 1;
    }
}