Code.go

package model

import (
	"github.com/saseul/vm"
	"github.com/saseul/util"
)

type Code struct {
	Type       string            `json:"type"`
	Machine    string            `json:"machine"`
	Name       string            `json:"name"`
	Version    string            `json:"version"`
	Space      string            `json:"space"`
	Writer     string            `json:"writer"`
	Parameters map[string]map[string]interface{} `json:"parameters"`
	Executions []interface{}     `json:"executions"`
}

func NewCode() *Code {
	return &Code{
		Type:       "code",
		Parameters: make(map[string]map[string]interface{}),
	}
}

func (c *Code) Cid() string {
	return util.SpaceID(c.Writer, c.Space)
}

func (c *Code) GetType() string {
	return c.Type
}

func (c *Code) SetType(t string) {
	c.Type = t
}

func (c *Code) GetMachine() string {
	return c.Machine
}

func (c *Code) SetMachine(m string) {
	c.Machine = m
}

func (c *Code) GetName() string {
	return c.Name
}

func (c *Code) SetName(n string) {
	c.Name = n
}

func (c *Code) GetVersion() string {
	return c.Version
}

func (c *Code) SetVersion(v string) {
	c.Version = v
}

func (c *Code) GetSpace() string {
	return c.Space
}

func (c *Code) SetSpace(s string) {
	c.Space = s
}

func (c *Code) GetWriter() string {
	return c.Writer
}

func (c *Code) SetWriter(w string) {
	c.Writer = w
}

func (c *Code) AddParameter(parameter *vm.Parameter) {
	if parameter.ObjValidity() && c.Parameters[parameter.Name()] == nil {
		c.Parameters[parameter.Name()] = parameter.Obj()
	}
}

func (c *Code) GetParameters() map[string]map[string]interface{} {
	return c.Parameters
}

func (c *Code) AddExecution(execution interface{}) {
	c.Executions = append(c.Executions, execution)
}

func (c *Code) GetExecutions() []interface{} {
	return c.Executions
}

Code 구조체

Code 구조체는 코드 객체를 정의합니다. 이 객체는 JSON 형식으로 직렬화될 수 있으며, 다양한 코드 속성과 매개변수, 실행을 포함합니다.

  • Type: 코드의 유형을 나타냅니다.

  • Machine: 코드가 실행될 머신의 이름입니다.

  • Name: 코드의 이름입니다.

  • Version: 코드의 버전입니다.

  • Space: 코드가 속한 공간(네임스페이스)입니다.

  • Writer: 코드를 작성한 작성자의 ID입니다.

  • Parameters: 코드 실행에 필요한 매개변수들의 맵입니다.

  • Executions: 코드의 실행 기록입니다.

생성자 함수

  • 새로운 Code 객체를 생성합니다. 기본적으로 Type을 "code"로 설정하고, Parameters 맵을 초기화합니다.

필드 접근자 및 설정자 메서드

각 필드에 접근하고 설정하기 위한 메서드입니다.

  • WriterSpace를 기반으로 공간 ID(Cid)를 생성합니다.

  • 각 필드에 대한 Getter 및 Setter 메서드입니다. 이를 통해 코드 객체의 필드 값을 가져오거나 설정할 수 있습니다.

매개변수 관련 메서드

  • AddParameter: 주어진 parameter 객체의 유효성을 검사한 후, 해당 매개변수를 Parameters 맵에 추가합니다. 매개변수의 이름을 키로 사용하고, 매개변수 객체를 값으로 저장합니다.

  • GetParameters: 현재 Parameters 맵을 반환합니다.

실행 관련 메서드

  • AddExecution: 주어진 실행 객체를 Executions 슬라이스에 추가합니다.

  • GetExecutions: 현재 Executions 슬라이스를 반환합니다.

요약

이 코드는 Code 객체를 정의하고, 그 객체의 필드들을 설정하고 가져오며, 매개변수와 실행을 추가하는 기능을 제공합니다. 각 메서드는 특정 필드를 설정하거나 반환하는 역할을 하며, 매개변수와 실행에 관련된 메서드는 이를 추가하고 가져오는 기능을 합니다. 전체적으로 이 코드는 코드 객체의 속성을 관리하고, 그와 관련된 데이터를 구조적으로 다룰 수 있도록 합니다.

Last updated