/*
 * Harbor API
 *
 * These APIs provide services for manipulating Harbor project.
 *
 * OpenAPI spec version: 0.3.0
 *
 * Generated by: https://github.com/swagger-api/swagger-codegen.git
 *
 * 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 apilib

type Project struct {

	// Project ID
	ProjectId int32 `json:"project_id,omitempty"`

	// The owner ID of the project always means the creator of the project.
	OwnerId int32 `json:"owner_id,omitempty"`

	// The name of the project.
	ProjectName string `json:"name,omitempty"`

	// The creation time of the project.
	CreationTime string `json:"creation_time,omitempty"`

	// The update time of the project.
	UpdateTime string `json:"update_time,omitempty"`

	// A deletion mark of the project (1 means it's deleted, 0 is not)
	Deleted bool `json:"deleted,omitempty"`

	// The owner name of the project.
	OwnerName string `json:"owner_name,omitempty"`

	// The metadata of the project.
	Metadata map[string]string `json:"metadata,omitempty"`

	// Correspond to the UI about whether the project's publicity is  updatable (for UI)
	Togglable bool `json:"togglable,omitempty"`

	// The role ID of the current user who triggered the API (for UI)
	CurrentUserRoleId int32 `json:"current_user_role_id,omitempty"`

	// The number of the repositories under this project.
	RepoCount int32 `json:"repo_count,omitempty"`
}

type ProjectQuery struct {
	Name     string `url:"name,omitempty"`
	Owner    string `url:"owner,omitempty"`
	Public   bool   `url:"public,omitempty"`
	Member   string `url:"member,omitempty"`
	Role     int    `url:"role,omitempty"`
	Page     int64  `url:"page,omitempty"`
	PageSize int64  `url:"page_size,omitempty"`
}

// ProjectSummary ...
type ProjectSummary struct {
	RepoCount  int64  `json:"repo_count"`
	ChartCount uint64 `json:"chart_count"`

	ProjectAdminCount int64 `json:"project_admin_count"`
	MasterCount       int64 `json:"master_count"`
	DeveloperCount    int64 `json:"developer_count"`
	GuestCount        int64 `json:"guest_count"`

	Quota struct {
		Hard map[string]int64 `json:"hard"`
		Used map[string]int64 `json:"used"`
	} `json:"quota"`
}
