From 8ed1c204d42c9fc9ba59a71a8815ecde58df912c Mon Sep 17 00:00:00 2001 From: KK <68334452+healthjyk@users.noreply.github.com> Date: Tue, 7 May 2024 20:11:16 +0800 Subject: [PATCH] feat: add the release storage interface (#1107) --- pkg/engine/release/storage.go | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 pkg/engine/release/storage.go diff --git a/pkg/engine/release/storage.go b/pkg/engine/release/storage.go new file mode 100644 index 00000000..4331190d --- /dev/null +++ b/pkg/engine/release/storage.go @@ -0,0 +1,27 @@ +package release + +import ( + v1 "kusionstack.io/kusion/pkg/apis/api.kusion.io/v1" +) + +// Storage is used to provide storage service for multiple releases. +type Storage interface { + // Get returns a specified Release which is determined by the group of Project, Workspace + // and Revision. + Get(project, workspace string, revision uint64) (*v1.Release, error) + + // GetRevisions returns the Revisions of a specified Project and Workspace. + GetRevisions(project, workspace string) ([]uint64, error) + + // GetStackBoundRevisions returns the Revisions of a specified Project, Stack and Workspace. + GetStackBoundRevisions(project, stack, workspace string) ([]uint64, error) + + // GetLatestRevision returns the latest State which corresponds to the current infra Resources. + GetLatestRevision(project, workspace string) (uint64, error) + + // Create creates a new Release in the Storage. + Create(release *v1.Release) error + + // Update updates an existing Release in the Storage. + Update(release *v1.Release) error +}