github.com/pf-qiu/concourse/v6@v6.7.3-0.20201207032516-1f455d73275f/atc/db/container_metadata.go (about)

     1  package db
     2  
     3  import "fmt"
     4  
     5  type ContainerMetadata struct {
     6  	Type ContainerType
     7  
     8  	StepName string
     9  	Attempt  string
    10  
    11  	WorkingDirectory string
    12  	User             string
    13  
    14  	PipelineID int
    15  	JobID      int
    16  	BuildID    int
    17  
    18  	PipelineName         string
    19  	PipelineInstanceVars string
    20  	JobName              string
    21  	BuildName            string
    22  }
    23  
    24  type ContainerType string
    25  
    26  const (
    27  	ContainerTypeCheck ContainerType = "check"
    28  	ContainerTypeGet   ContainerType = "get"
    29  	ContainerTypePut   ContainerType = "put"
    30  	ContainerTypeTask  ContainerType = "task"
    31  )
    32  
    33  func ContainerTypeFromString(containerType string) (ContainerType, error) {
    34  	switch containerType {
    35  	case "check":
    36  		return ContainerTypeCheck, nil
    37  	case "get":
    38  		return ContainerTypeGet, nil
    39  	case "put":
    40  		return ContainerTypePut, nil
    41  	case "task":
    42  		return ContainerTypeTask, nil
    43  	default:
    44  		return "", fmt.Errorf("Unrecognized containerType: %s", containerType)
    45  	}
    46  }
    47  
    48  func (metadata ContainerMetadata) SQLMap() map[string]interface{} {
    49  	m := map[string]interface{}{}
    50  
    51  	if metadata.Type != "" {
    52  		m["meta_type"] = string(metadata.Type)
    53  	}
    54  
    55  	if metadata.StepName != "" {
    56  		m["meta_step_name"] = metadata.StepName
    57  	}
    58  
    59  	if metadata.Attempt != "" {
    60  		m["meta_attempt"] = metadata.Attempt
    61  	}
    62  
    63  	if metadata.WorkingDirectory != "" {
    64  		m["meta_working_directory"] = metadata.WorkingDirectory
    65  	}
    66  
    67  	if metadata.User != "" {
    68  		m["meta_process_user"] = metadata.User
    69  	}
    70  
    71  	if metadata.PipelineID != 0 {
    72  		m["meta_pipeline_id"] = metadata.PipelineID
    73  	}
    74  
    75  	if metadata.JobID != 0 {
    76  		m["meta_job_id"] = metadata.JobID
    77  	}
    78  
    79  	if metadata.BuildID != 0 {
    80  		m["meta_build_id"] = metadata.BuildID
    81  	}
    82  
    83  	if metadata.PipelineName != "" {
    84  		m["meta_pipeline_name"] = metadata.PipelineName
    85  	}
    86  
    87  	if metadata.PipelineInstanceVars != "" {
    88  		m["meta_pipeline_instance_vars"] = metadata.PipelineInstanceVars
    89  	}
    90  
    91  	if metadata.JobName != "" {
    92  		m["meta_job_name"] = metadata.JobName
    93  	}
    94  
    95  	if metadata.BuildName != "" {
    96  		m["meta_build_name"] = metadata.BuildName
    97  	}
    98  
    99  	return m
   100  }
   101  
   102  var containerMetadataColumns = []string{
   103  	"meta_type",
   104  	"meta_step_name",
   105  	"meta_attempt",
   106  	"meta_working_directory",
   107  	"meta_process_user",
   108  	"meta_pipeline_id",
   109  	"meta_job_id",
   110  	"meta_build_id",
   111  	"meta_pipeline_name",
   112  	"meta_pipeline_instance_vars",
   113  	"meta_job_name",
   114  	"meta_build_name",
   115  }
   116  
   117  func (metadata *ContainerMetadata) ScanTargets() []interface{} {
   118  	return []interface{}{
   119  		&metadata.Type,
   120  		&metadata.StepName,
   121  		&metadata.Attempt,
   122  		&metadata.WorkingDirectory,
   123  		&metadata.User,
   124  		&metadata.PipelineID,
   125  		&metadata.JobID,
   126  		&metadata.BuildID,
   127  		&metadata.PipelineName,
   128  		&metadata.PipelineInstanceVars,
   129  		&metadata.JobName,
   130  		&metadata.BuildName,
   131  	}
   132  }