// Copyright 2023 Harness, Inc. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. // Package types defines common data structures. package types import "github.com/harness/gitness/types/enum" type ( // ServiceAccount is a principal representing a service account. ServiceAccount struct { // Fields from Principal (without admin, as it's never an admin) ID int64 `db:"principal_id" json:"-"` UID string `db:"principal_uid" json:"uid"` Email string `db:"principal_email" json:"email"` DisplayName string `db:"principal_display_name" json:"display_name"` Admin bool `db:"principal_admin" json:"admin"` Blocked bool `db:"principal_blocked" json:"blocked"` Salt string `db:"principal_salt" json:"-"` Created int64 `db:"principal_created" json:"created"` Updated int64 `db:"principal_updated" json:"updated"` // ServiceAccount specific fields ParentType enum.ParentResourceType `db:"principal_sa_parent_type" json:"parent_type"` ParentID int64 `db:"principal_sa_parent_id" json:"parent_id"` } // ServiceAccountInput store details used to // create or update a service account. ServiceAccountInput struct { DisplayName *string `json:"display_name"` ParentType *enum.ParentResourceType `json:"parent_type"` ParentID *int64 `json:"parent_id"` } ) func (s *ServiceAccount) ToPrincipal() *Principal { return &Principal{ ID: s.ID, UID: s.UID, Email: s.Email, Type: enum.PrincipalTypeServiceAccount, DisplayName: s.DisplayName, Admin: s.Admin, Blocked: s.Blocked, Salt: s.Salt, Created: s.Created, Updated: s.Updated, } } func (s *ServiceAccount) ToPrincipalInfo() *PrincipalInfo { return s.ToPrincipal().ToPrincipalInfo() }