2024-07-22 15:29:39 +08:00
|
|
|
from pydantic import Field
|
|
|
|
|
|
|
|
from core.helper import encrypter
|
|
|
|
|
2024-07-26 15:03:56 +08:00
|
|
|
from .segments import (
|
2024-07-27 14:43:51 +08:00
|
|
|
ArrayAnySegment,
|
|
|
|
ArrayNumberSegment,
|
|
|
|
ArrayObjectSegment,
|
|
|
|
ArrayStringSegment,
|
2024-07-26 15:03:56 +08:00
|
|
|
FloatSegment,
|
|
|
|
IntegerSegment,
|
|
|
|
NoneSegment,
|
|
|
|
ObjectSegment,
|
|
|
|
Segment,
|
|
|
|
StringSegment,
|
|
|
|
)
|
2024-07-22 15:29:39 +08:00
|
|
|
from .types import SegmentType
|
|
|
|
|
|
|
|
|
|
|
|
class Variable(Segment):
|
|
|
|
"""
|
|
|
|
A variable is a segment that has a name.
|
|
|
|
"""
|
|
|
|
|
|
|
|
id: str = Field(
|
|
|
|
default='',
|
|
|
|
description="Unique identity for variable. It's only used by environment variables now.",
|
|
|
|
)
|
|
|
|
name: str
|
2024-07-24 19:35:22 +08:00
|
|
|
description: str = Field(default='', description='Description of the variable.')
|
2024-07-22 15:29:39 +08:00
|
|
|
|
|
|
|
|
|
|
|
class StringVariable(StringSegment, Variable):
|
|
|
|
pass
|
|
|
|
|
|
|
|
|
2024-07-26 15:03:56 +08:00
|
|
|
class FloatVariable(FloatSegment, Variable):
|
|
|
|
pass
|
2024-07-22 15:29:39 +08:00
|
|
|
|
2024-07-25 17:06:38 +08:00
|
|
|
|
2024-07-26 15:03:56 +08:00
|
|
|
class IntegerVariable(IntegerSegment, Variable):
|
|
|
|
pass
|
2024-07-22 15:29:39 +08:00
|
|
|
|
|
|
|
|
2024-07-26 15:03:56 +08:00
|
|
|
class ObjectVariable(ObjectSegment, Variable):
|
|
|
|
pass
|
2024-07-22 15:29:39 +08:00
|
|
|
|
2024-07-25 17:06:38 +08:00
|
|
|
|
2024-07-27 14:43:51 +08:00
|
|
|
class ArrayAnyVariable(ArrayAnySegment, Variable):
|
2024-07-26 15:03:56 +08:00
|
|
|
pass
|
2024-07-22 15:29:39 +08:00
|
|
|
|
|
|
|
|
2024-07-27 14:43:51 +08:00
|
|
|
class ArrayStringVariable(ArrayStringSegment, Variable):
|
|
|
|
pass
|
|
|
|
|
|
|
|
|
|
|
|
class ArrayNumberVariable(ArrayNumberSegment, Variable):
|
|
|
|
pass
|
|
|
|
|
|
|
|
|
|
|
|
class ArrayObjectVariable(ArrayObjectSegment, Variable):
|
|
|
|
pass
|
|
|
|
|
|
|
|
|
2024-07-22 15:29:39 +08:00
|
|
|
|
|
|
|
class SecretVariable(StringVariable):
|
|
|
|
value_type: SegmentType = SegmentType.SECRET
|
|
|
|
|
|
|
|
@property
|
|
|
|
def log(self) -> str:
|
|
|
|
return encrypter.obfuscated_token(self.value)
|
2024-07-23 17:59:32 +08:00
|
|
|
|
|
|
|
|
2024-07-23 21:46:08 +08:00
|
|
|
class NoneVariable(NoneSegment, Variable):
|
2024-07-23 17:59:32 +08:00
|
|
|
value_type: SegmentType = SegmentType.NONE
|
2024-07-23 21:46:08 +08:00
|
|
|
value: None = None
|