From 5e49842e6f3e14facefeefce3f81b884c1586ee8 Mon Sep 17 00:00:00 2001 From: Gibheer Date: Tue, 21 Apr 2020 21:20:35 +0200 Subject: [PATCH] add WithCheck --- main.go | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/main.go b/main.go index 4305008..b94958d 100644 --- a/main.go +++ b/main.go @@ -16,4 +16,24 @@ type ( // state. Ensure() error } + + checkEnsurer struct { + Is Enforced + State Ensurer + } ) + +// WithCheck creates an Ensurer instance that runs is before Ensure. +func WithCheck(is Enforced, en Ensurer) Ensurer { + return &checkEnsurer{ + Is: is, + State: en, + } +} + +func (c *checkEnsurer) Ensure() error { + if !c.Is() { + return c.State.Ensure() + } + return nil +}