| // Licensed to the Apache Software Foundation (ASF) under one or more |
| // contributor license agreements. See the NOTICE file distributed with |
| // this work for additional information regarding copyright ownership. |
| // The ASF licenses this file to You 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. |
| |
| package cache |
| |
| import ( |
| "context" |
| "time" |
| |
| "github.com/google/uuid" |
| |
| pb "beam.apache.org/playground/backend/internal/api/v1" |
| "beam.apache.org/playground/backend/internal/db/entity" |
| ) |
| |
| // SubKey is used to keep value with Cache using nested structure like pipelineId:subKey:value |
| type SubKey string |
| |
| // All possible subKeys and string keys to process with Cache |
| const ( |
| // Status is used to keep playground.Status value |
| Status SubKey = "STATUS" |
| |
| // RunOutput is used to keep run code output value |
| RunOutput SubKey = "RUN_OUTPUT" |
| |
| // RunError is used to keep run code error value |
| RunError SubKey = "RUN_ERROR" |
| |
| // ValidationOutput is used to keep validation output value |
| ValidationOutput SubKey = "VALIDATION_OUTPUT" |
| |
| // PreparationOutput is used to keep prepare step output value |
| PreparationOutput SubKey = "PREPARATION_OUTPUT" |
| |
| // CompileOutput is used to keep compilation output value |
| CompileOutput SubKey = "COMPILE_OUTPUT" |
| |
| // Canceled is used to keep the canceled status |
| Canceled SubKey = "CANCELED" |
| |
| // RunOutputIndex is the index of the start of the run step's output |
| RunOutputIndex SubKey = "RUN_OUTPUT_INDEX" |
| |
| // Logs is used to keep logs value |
| Logs SubKey = "LOGS" |
| |
| // LogsIndex is the index of the start of the log |
| LogsIndex SubKey = "LOGS_INDEX" |
| |
| // Graph is used to keep graph of the execution |
| Graph SubKey = "GRAPH" |
| |
| // ExamplesCatalog is catalog of examples available in Playground |
| ExamplesCatalog string = "EXAMPLES_CATALOG" |
| |
| // SdksCatalog is the catalog of SDKs in Playground |
| SdksCatalog string = "SDKS_CATALOG" |
| |
| // DefaultPrecompiledExamples is used to keep default examples |
| DefaultPrecompiledExamples string = "DEFAULT_PRECOMPILED_OBJECTS" |
| ) |
| |
| // Cache is used to store states and outputs for Apache Beam pipelines that running in Playground |
| // Cache allows keep and read any value by pipelineId and subKey: |
| // pipelineId_1: |
| // subKey_1: value_1 |
| // subKey_2: value_2 |
| // pipelineId_2: |
| // subKey_1: value_3 |
| // subKey_3: value_4 |
| // pipelineId is uuid that calculates in the controller when the server takes new request to run code |
| type Cache interface { |
| // GetValue returns value from cache by pipelineId and subKey. |
| GetValue(ctx context.Context, pipelineId uuid.UUID, subKey SubKey) (interface{}, error) |
| |
| // SetValue adds value to cache by pipelineId and subKey. |
| SetValue(ctx context.Context, pipelineId uuid.UUID, subKey SubKey, value interface{}) error |
| |
| // SetExpTime adds expiration time of the pipeline to cache by pipelineId. |
| SetExpTime(ctx context.Context, pipelineId uuid.UUID, expTime time.Duration) error |
| |
| // SetCatalog adds the given catalog to cache by ExamplesCatalog key. |
| SetCatalog(ctx context.Context, catalog []*pb.Categories) error |
| |
| // GetCatalog returns catalog from cache by ExamplesCatalog key. |
| GetCatalog(ctx context.Context) ([]*pb.Categories, error) |
| |
| // SetDefaultPrecompiledObject adds default precompiled object for SDK into cache. |
| SetDefaultPrecompiledObject(ctx context.Context, sdk pb.Sdk, precompiledObject *pb.PrecompiledObject) error |
| |
| // GetDefaultPrecompiledObject returns default precompiled object for SDK from cache. |
| GetDefaultPrecompiledObject(ctx context.Context, sdk pb.Sdk) (*pb.PrecompiledObject, error) |
| |
| // SetSdkCatalog adds the given sdk catalog to the cache. |
| SetSdkCatalog(ctx context.Context, sdks []*entity.SDKEntity) error |
| |
| // GetSdkCatalog returns sdk catalog from the cache. |
| GetSdkCatalog(ctx context.Context) ([]*entity.SDKEntity, error) |
| } |