code.gitea.io/gitea@v1.21.7/models/migrations/v1_17/v212.go (about)

     1  // Copyright 2022 The Gitea Authors. All rights reserved.
     2  // SPDX-License-Identifier: MIT
     3  
     4  package v1_17 //nolint
     5  
     6  import (
     7  	"code.gitea.io/gitea/modules/timeutil"
     8  
     9  	"xorm.io/xorm"
    10  )
    11  
    12  func AddPackageTables(x *xorm.Engine) error {
    13  	type Package struct {
    14  		ID               int64  `xorm:"pk autoincr"`
    15  		OwnerID          int64  `xorm:"UNIQUE(s) INDEX NOT NULL"`
    16  		RepoID           int64  `xorm:"INDEX"`
    17  		Type             string `xorm:"UNIQUE(s) INDEX NOT NULL"`
    18  		Name             string `xorm:"NOT NULL"`
    19  		LowerName        string `xorm:"UNIQUE(s) INDEX NOT NULL"`
    20  		SemverCompatible bool   `xorm:"NOT NULL DEFAULT false"`
    21  	}
    22  
    23  	if err := x.Sync(new(Package)); err != nil {
    24  		return err
    25  	}
    26  
    27  	type PackageVersion struct {
    28  		ID            int64              `xorm:"pk autoincr"`
    29  		PackageID     int64              `xorm:"UNIQUE(s) INDEX NOT NULL"`
    30  		CreatorID     int64              `xorm:"NOT NULL DEFAULT 0"`
    31  		Version       string             `xorm:"NOT NULL"`
    32  		LowerVersion  string             `xorm:"UNIQUE(s) INDEX NOT NULL"`
    33  		CreatedUnix   timeutil.TimeStamp `xorm:"created INDEX NOT NULL"`
    34  		IsInternal    bool               `xorm:"INDEX NOT NULL DEFAULT false"`
    35  		MetadataJSON  string             `xorm:"metadata_json TEXT"`
    36  		DownloadCount int64              `xorm:"NOT NULL DEFAULT 0"`
    37  	}
    38  
    39  	if err := x.Sync(new(PackageVersion)); err != nil {
    40  		return err
    41  	}
    42  
    43  	type PackageProperty struct {
    44  		ID      int64  `xorm:"pk autoincr"`
    45  		RefType int64  `xorm:"INDEX NOT NULL"`
    46  		RefID   int64  `xorm:"INDEX NOT NULL"`
    47  		Name    string `xorm:"INDEX NOT NULL"`
    48  		Value   string `xorm:"TEXT NOT NULL"`
    49  	}
    50  
    51  	if err := x.Sync(new(PackageProperty)); err != nil {
    52  		return err
    53  	}
    54  
    55  	type PackageFile struct {
    56  		ID           int64              `xorm:"pk autoincr"`
    57  		VersionID    int64              `xorm:"UNIQUE(s) INDEX NOT NULL"`
    58  		BlobID       int64              `xorm:"INDEX NOT NULL"`
    59  		Name         string             `xorm:"NOT NULL"`
    60  		LowerName    string             `xorm:"UNIQUE(s) INDEX NOT NULL"`
    61  		CompositeKey string             `xorm:"UNIQUE(s) INDEX"`
    62  		IsLead       bool               `xorm:"NOT NULL DEFAULT false"`
    63  		CreatedUnix  timeutil.TimeStamp `xorm:"created INDEX NOT NULL"`
    64  	}
    65  
    66  	if err := x.Sync(new(PackageFile)); err != nil {
    67  		return err
    68  	}
    69  
    70  	type PackageBlob struct {
    71  		ID          int64              `xorm:"pk autoincr"`
    72  		Size        int64              `xorm:"NOT NULL DEFAULT 0"`
    73  		HashMD5     string             `xorm:"hash_md5 char(32) UNIQUE(md5) INDEX NOT NULL"`
    74  		HashSHA1    string             `xorm:"hash_sha1 char(40) UNIQUE(sha1) INDEX NOT NULL"`
    75  		HashSHA256  string             `xorm:"hash_sha256 char(64) UNIQUE(sha256) INDEX NOT NULL"`
    76  		HashSHA512  string             `xorm:"hash_sha512 char(128) UNIQUE(sha512) INDEX NOT NULL"`
    77  		CreatedUnix timeutil.TimeStamp `xorm:"created INDEX NOT NULL"`
    78  	}
    79  
    80  	if err := x.Sync(new(PackageBlob)); err != nil {
    81  		return err
    82  	}
    83  
    84  	type PackageBlobUpload struct {
    85  		ID             string             `xorm:"pk"`
    86  		BytesReceived  int64              `xorm:"NOT NULL DEFAULT 0"`
    87  		HashStateBytes []byte             `xorm:"BLOB"`
    88  		CreatedUnix    timeutil.TimeStamp `xorm:"created NOT NULL"`
    89  		UpdatedUnix    timeutil.TimeStamp `xorm:"updated INDEX NOT NULL"`
    90  	}
    91  
    92  	return x.Sync(new(PackageBlobUpload))
    93  }