2020-08-17 06:07:38 +03:00
// Copyright 2020 The Gitea Authors. All rights reserved.
2022-11-27 21:20:29 +03:00
// SPDX-License-Identifier: MIT
2020-08-17 06:07:38 +03:00
2022-11-02 11:54:36 +03:00
package v1_13 //nolint
2020-08-17 06:07:38 +03:00
import (
"code.gitea.io/gitea/modules/timeutil"
"xorm.io/xorm"
)
2022-11-02 11:54:36 +03:00
func AddProjectsInfo ( x * xorm . Engine ) error {
2020-08-17 06:07:38 +03:00
// Create new tables
type (
ProjectType uint8
ProjectBoardType uint8
)
type Project struct {
ID int64 ` xorm:"pk autoincr" `
Title string ` xorm:"INDEX NOT NULL" `
Description string ` xorm:"TEXT" `
RepoID int64 ` xorm:"INDEX" `
CreatorID int64 ` xorm:"NOT NULL" `
IsClosed bool ` xorm:"INDEX" `
BoardType ProjectBoardType
Type ProjectType
ClosedDateUnix timeutil . TimeStamp
CreatedUnix timeutil . TimeStamp ` xorm:"INDEX created" `
UpdatedUnix timeutil . TimeStamp ` xorm:"INDEX updated" `
}
2023-08-13 22:17:21 +03:00
if err := x . Sync ( new ( Project ) ) ; err != nil {
2020-08-17 06:07:38 +03:00
return err
}
type Comment struct {
OldProjectID int64
ProjectID int64
}
2023-08-13 22:17:21 +03:00
if err := x . Sync ( new ( Comment ) ) ; err != nil {
2020-08-17 06:07:38 +03:00
return err
}
type Repository struct {
ID int64
NumProjects int ` xorm:"NOT NULL DEFAULT 0" `
NumClosedProjects int ` xorm:"NOT NULL DEFAULT 0" `
}
2023-08-13 22:17:21 +03:00
if err := x . Sync ( new ( Repository ) ) ; err != nil {
2020-08-17 06:07:38 +03:00
return err
}
// ProjectIssue saves relation from issue to a project
type ProjectIssue struct {
ID int64 ` xorm:"pk autoincr" `
IssueID int64 ` xorm:"INDEX" `
ProjectID int64 ` xorm:"INDEX" `
ProjectBoardID int64 ` xorm:"INDEX" `
}
2023-08-13 22:17:21 +03:00
if err := x . Sync ( new ( ProjectIssue ) ) ; err != nil {
2020-08-17 06:07:38 +03:00
return err
}
type ProjectBoard struct {
ID int64 ` xorm:"pk autoincr" `
Title string
Default bool ` xorm:"NOT NULL DEFAULT false" `
ProjectID int64 ` xorm:"INDEX NOT NULL" `
CreatorID int64 ` xorm:"NOT NULL" `
CreatedUnix timeutil . TimeStamp ` xorm:"INDEX created" `
UpdatedUnix timeutil . TimeStamp ` xorm:"INDEX updated" `
}
2023-08-13 22:17:21 +03:00
return x . Sync ( new ( ProjectBoard ) )
2020-08-17 06:07:38 +03:00
}