@@ -11,6 +11,7 @@ import (
1111
1212 repo_model "code.gitea.io/gitea/models/repo"
1313 user_model "code.gitea.io/gitea/models/user"
14+ "code.gitea.io/gitea/modules/cache"
1415 "code.gitea.io/gitea/modules/json"
1516 "code.gitea.io/gitea/modules/packages/alpine"
1617 "code.gitea.io/gitea/modules/packages/arch"
@@ -102,22 +103,26 @@ func (pd *PackageDescriptor) CalculateBlobSize() int64 {
102103
103104// GetPackageDescriptor gets the package description for a version
104105func GetPackageDescriptor (ctx context.Context , pv * PackageVersion ) (* PackageDescriptor , error ) {
105- p , err := GetPackageByID (ctx , pv .PackageID )
106+ return getPackageDescriptor (ctx , pv , cache .NewEphemeralCache ())
107+ }
108+
109+ func getPackageDescriptor (ctx context.Context , pv * PackageVersion , c * cache.EphemeralCache ) (* PackageDescriptor , error ) {
110+ p , err := cache .GetWithEphemeralCache (ctx , c , "package" , pv .PackageID , GetPackageByID )
106111 if err != nil {
107112 return nil , err
108113 }
109- o , err := user_model . GetUserByID (ctx , p .OwnerID )
114+ o , err := cache . GetWithEphemeralCache (ctx , c , "user" , p .OwnerID , user_model . GetUserByID )
110115 if err != nil {
111116 return nil , err
112117 }
113118 var repository * repo_model.Repository
114119 if p .RepoID > 0 {
115- repository , err = repo_model . GetRepositoryByID (ctx , p .RepoID )
120+ repository , err = cache . GetWithEphemeralCache (ctx , c , "repo" , p .RepoID , repo_model . GetRepositoryByID )
116121 if err != nil && ! repo_model .IsErrRepoNotExist (err ) {
117122 return nil , err
118123 }
119124 }
120- creator , err := user_model . GetUserByID (ctx , pv .CreatorID )
125+ creator , err := cache . GetWithEphemeralCache (ctx , c , "user" , pv .CreatorID , user_model . GetUserByID )
121126 if err != nil {
122127 if errors .Is (err , util .ErrNotExist ) {
123128 creator = user_model .NewGhostUser ()
@@ -145,9 +150,13 @@ func GetPackageDescriptor(ctx context.Context, pv *PackageVersion) (*PackageDesc
145150 return nil , err
146151 }
147152
148- pfds , err := GetPackageFileDescriptors (ctx , pfs )
149- if err != nil {
150- return nil , err
153+ pfds := make ([]* PackageFileDescriptor , 0 , len (pfs ))
154+ for _ , pf := range pfs {
155+ pfd , err := getPackageFileDescriptor (ctx , pf , c )
156+ if err != nil {
157+ return nil , err
158+ }
159+ pfds = append (pfds , pfd )
151160 }
152161
153162 var metadata any
@@ -221,7 +230,11 @@ func GetPackageDescriptor(ctx context.Context, pv *PackageVersion) (*PackageDesc
221230
222231// GetPackageFileDescriptor gets a package file descriptor for a package file
223232func GetPackageFileDescriptor (ctx context.Context , pf * PackageFile ) (* PackageFileDescriptor , error ) {
224- pb , err := GetBlobByID (ctx , pf .BlobID )
233+ return getPackageFileDescriptor (ctx , pf , cache .NewEphemeralCache ())
234+ }
235+
236+ func getPackageFileDescriptor (ctx context.Context , pf * PackageFile , c * cache.EphemeralCache ) (* PackageFileDescriptor , error ) {
237+ pb , err := cache .GetWithEphemeralCache (ctx , c , "package_file_blob" , pf .BlobID , GetBlobByID )
225238 if err != nil {
226239 return nil , err
227240 }
@@ -251,9 +264,13 @@ func GetPackageFileDescriptors(ctx context.Context, pfs []*PackageFile) ([]*Pack
251264
252265// GetPackageDescriptors gets the package descriptions for the versions
253266func GetPackageDescriptors (ctx context.Context , pvs []* PackageVersion ) ([]* PackageDescriptor , error ) {
267+ return getPackageDescriptors (ctx , pvs , cache .NewEphemeralCache ())
268+ }
269+
270+ func getPackageDescriptors (ctx context.Context , pvs []* PackageVersion , c * cache.EphemeralCache ) ([]* PackageDescriptor , error ) {
254271 pds := make ([]* PackageDescriptor , 0 , len (pvs ))
255272 for _ , pv := range pvs {
256- pd , err := GetPackageDescriptor (ctx , pv )
273+ pd , err := getPackageDescriptor (ctx , pv , c )
257274 if err != nil {
258275 return nil , err
259276 }
0 commit comments