@@ -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,26 +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- return getPackageDescriptor (ctx , pv , newQueryCache ())
106+ return getPackageDescriptor (ctx , pv , cache . NewEphemeralCache ())
106107}
107108
108- func getPackageDescriptor (ctx context.Context , pv * PackageVersion , c * cache ) (* PackageDescriptor , error ) {
109- p , err := c . QueryPackage (ctx , pv .PackageID )
109+ func getPackageDescriptor (ctx context.Context , pv * PackageVersion , c * cache. EphemeralCache ) (* PackageDescriptor , error ) {
110+ p , err := cache . GetWithEphemeralCache (ctx , c , "package" , pv .PackageID , GetPackageByID )
110111 if err != nil {
111112 return nil , err
112113 }
113- o , err := c . QueryUser (ctx , p .OwnerID )
114+ o , err := cache . GetWithEphemeralCache (ctx , c , "user" , p .OwnerID , user_model . GetUserByID )
114115 if err != nil {
115116 return nil , err
116117 }
117118 var repository * repo_model.Repository
118119 if p .RepoID > 0 {
119- repository , err = c . QueryRepository (ctx , p .RepoID )
120+ repository , err = cache . GetWithEphemeralCache (ctx , c , "repo" , p .RepoID , repo_model . GetRepositoryByID )
120121 if err != nil && ! repo_model .IsErrRepoNotExist (err ) {
121122 return nil , err
122123 }
123124 }
124- creator , err := c . QueryUser (ctx , pv .CreatorID )
125+ creator , err := cache . GetWithEphemeralCache (ctx , c , "user" , pv .CreatorID , user_model . GetUserByID )
125126 if err != nil {
126127 if errors .Is (err , util .ErrNotExist ) {
127128 creator = user_model .NewGhostUser ()
@@ -229,11 +230,11 @@ func getPackageDescriptor(ctx context.Context, pv *PackageVersion, c *cache) (*P
229230
230231// GetPackageFileDescriptor gets a package file descriptor for a package file
231232func GetPackageFileDescriptor (ctx context.Context , pf * PackageFile ) (* PackageFileDescriptor , error ) {
232- return getPackageFileDescriptor (ctx , pf , newQueryCache ())
233+ return getPackageFileDescriptor (ctx , pf , cache . NewEphemeralCache ())
233234}
234235
235- func getPackageFileDescriptor (ctx context.Context , pf * PackageFile , c * cache ) (* PackageFileDescriptor , error ) {
236- pb , err := c . QueryBlob (ctx , pf .BlobID )
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 )
237238 if err != nil {
238239 return nil , err
239240 }
@@ -263,10 +264,10 @@ func GetPackageFileDescriptors(ctx context.Context, pfs []*PackageFile) ([]*Pack
263264
264265// GetPackageDescriptors gets the package descriptions for the versions
265266func GetPackageDescriptors (ctx context.Context , pvs []* PackageVersion ) ([]* PackageDescriptor , error ) {
266- return getPackageDescriptors (ctx , pvs , newQueryCache ())
267+ return getPackageDescriptors (ctx , pvs , cache . NewEphemeralCache ())
267268}
268269
269- func getPackageDescriptors (ctx context.Context , pvs []* PackageVersion , c * cache ) ([]* PackageDescriptor , error ) {
270+ func getPackageDescriptors (ctx context.Context , pvs []* PackageVersion , c * cache. EphemeralCache ) ([]* PackageDescriptor , error ) {
270271 pds := make ([]* PackageDescriptor , 0 , len (pvs ))
271272 for _ , pv := range pvs {
272273 pd , err := getPackageDescriptor (ctx , pv , c )
@@ -277,62 +278,3 @@ func getPackageDescriptors(ctx context.Context, pvs []*PackageVersion, c *cache)
277278 }
278279 return pds , nil
279280}
280-
281- type cache struct {
282- Packages map [int64 ]* Package
283- Users map [int64 ]* user_model.User
284- Repositories map [int64 ]* repo_model.Repository
285- Blobs map [int64 ]* PackageBlob
286- }
287-
288- func newQueryCache () * cache {
289- return & cache {
290- Packages : make (map [int64 ]* Package ),
291- Users : make (map [int64 ]* user_model.User ),
292- Repositories : map [int64 ]* repo_model.Repository {0 : nil }, // 0 is an expected value
293- Blobs : make (map [int64 ]* PackageBlob ),
294- }
295- }
296-
297- func (c * cache ) QueryPackage (ctx context.Context , id int64 ) (* Package , error ) {
298- if p , found := c .Packages [id ]; found {
299- return p , nil
300- }
301-
302- p , err := GetPackageByID (ctx , id )
303- c .Packages [id ] = p
304- return p , err
305- }
306-
307- func (c * cache ) QueryUser (ctx context.Context , id int64 ) (* user_model.User , error ) {
308- if u , found := c .Users [id ]; found {
309- return u , nil
310- }
311-
312- u , err := user_model .GetUserByID (ctx , id )
313- c .Users [id ] = u
314- return u , err
315- }
316-
317- func (c * cache ) QueryRepository (ctx context.Context , id int64 ) (* repo_model.Repository , error ) {
318- if r , found := c .Repositories [id ]; found {
319- return r , nil
320- }
321-
322- r , err := repo_model .GetRepositoryByID (ctx , id )
323- if err != nil && ! repo_model .IsErrRepoNotExist (err ) {
324- err = nil
325- }
326- c .Repositories [id ] = r
327- return r , err
328- }
329-
330- func (c * cache ) QueryBlob (ctx context.Context , id int64 ) (* PackageBlob , error ) {
331- if b , found := c .Blobs [id ]; found {
332- return b , nil
333- }
334-
335- b , err := GetBlobByID (ctx , id )
336- c .Blobs [id ] = b
337- return b , err
338- }
0 commit comments