示例#1
0
        public static async Task Delete(
            int projectId,
            string version,
            string branch,
            StorageClient client,
            upwardContext upwardDb,
            accountsContext accountsDb)
        {
            var ver = version.Split(".");

            int major = int.Parse(ver[0]);
            int minor = int.Parse(ver[1]);
            int patch = int.Parse(ver[2]);

            var pkg = await upwardDb.Pkgfile
                      .Where(r => r.Project == projectId && r.Major == major && r.Minor == minor && r.Patch == patch && r.Branch == branch)
                      .FirstOrDefaultAsync();

            var project = await accountsDb.Project
                          .Where(r => r.Id == projectId)
                          .FirstOrDefaultAsync();

            var user = await accountsDb.Userprofile
                       .Where(r => r.Id == project.Userid)
                       .FirstOrDefaultAsync();

            user.Size -= pkg.Size;
            upwardDb.Pkgfile.Remove(pkg);

            if (pkg.Filename.Count() == 0)
            {
                await accountsDb.SaveChangesAsync();

                await upwardDb.SaveChangesAsync();

                return;
            }
            else
            {
                foreach (string name in pkg.Filename)
                {
                    await client.DeleteObjectAsync("upward-test", $"pkg/{projectId}/{branch}/{version}/{name}");
                }

                await accountsDb.SaveChangesAsync();

                await upwardDb.SaveChangesAsync();
            }
        }
示例#2
0
        public static async Task UploadFile(
            int projectId,
            MemoryStream memBody,
            string version,
            string filename,
            string contentType,
            long contentLength,
            string branch,
            StorageClient client,
            upwardContext upwardDb,
            accountsContext accountsDb)
        {
            var ver = version.Split(".");

            int major = int.Parse(ver[0]);
            int minor = int.Parse(ver[1]);
            int patch = int.Parse(ver[2]);

            var pkg = await upwardDb.Pkgfile
                      .Where(r => r.Project == projectId && r.Major == major && r.Minor == minor && r.Patch == patch && r.Branch == branch)
                      .FirstOrDefaultAsync();

            var project = await accountsDb.Project
                          .Where(r => r.Id == projectId)
                          .FirstOrDefaultAsync();

            var user = await accountsDb.Userprofile
                       .Where(r => r.Id == project.Userid)
                       .FirstOrDefaultAsync();

            pkg.Filename = pkg.Filename.Concat(new string[] { filename }).ToArray();
            pkg.Size    += contentLength;
            user.Size   += contentLength;

            await client.UploadObjectAsync(
                bucket : "upward-test",
                objectName : $"pkg/{projectId}/{branch}/{version}/{filename}",
                contentType : contentType,
                source : memBody
                );

            await upwardDb.SaveChangesAsync();

            await accountsDb.SaveChangesAsync();
        }
示例#3
0
        public static async Task DeleteFile(
            int projectId,
            string version,
            string filename,
            string branch,
            StorageClient client,
            upwardContext upwardDb,
            accountsContext accountsDb)
        {
            var ver = version.Split(".");

            int major = int.Parse(ver[0]);
            int minor = int.Parse(ver[1]);
            int patch = int.Parse(ver[2]);

            var pkg = await upwardDb.Pkgfile
                      .Where(r => r.Project == projectId && r.Major == major && r.Minor == minor && r.Patch == patch && r.Branch == branch)
                      .FirstOrDefaultAsync();

            var project = await accountsDb.Project
                          .Where(r => r.Id == projectId)
                          .FirstOrDefaultAsync();

            var user = await accountsDb.Userprofile
                       .Where(r => r.Id == project.Userid)
                       .FirstOrDefaultAsync();

            var metaData = await client
                           .GetObjectAsync("upward-test", $"pkg/{projectId}/{branch}/{version}/{filename}");

            pkg.Filename = pkg.Filename.Where(val => val != filename).ToArray();
            pkg.Size    -= (long)metaData.Size;
            user.Size   -= (long)metaData.Size;

            await client.DeleteObjectAsync("upward-test", $"pkg/{projectId}/{branch}/{version}/{filename}");

            await accountsDb.SaveChangesAsync();

            await upwardDb.SaveChangesAsync();
        }
示例#4
0
 public DeletePackageController(upwardContext _upwardDb, accountsContext _accountsDb, StorageClient _storageClient)
 {
     upwardDb      = _upwardDb;
     storageClient = _storageClient;
 }
示例#5
0
        // ValidSemver must be used before NoRollback.
        public static async Task <bool> NoRollback(string version, string branch, int projectId, upwardContext upwardDb)
        {
            var ver = version.Split(".");

            var major = int.Parse(ver[0]);
            var minor = int.Parse(ver[1]);
            var patch = int.Parse(ver[2]);

            var hasRollback = await upwardDb.Pkgfile
                              .AnyAsync(r => r.Project == projectId &&
                                        r.Branch == branch &&
                                        (r.Major > major ||
                                         (r.Minor > minor && r.Major == major) ||
                                         (r.Patch > patch && r.Major == major && r.Minor == minor) ||
                                         (r.Patch == patch && r.Major == major && r.Minor == minor)));

            if (hasRollback)
            {
                return(false);
            }

            return(true);
        }
示例#6
0
 public ProjectSettingsController(upwardContext _upwardDb, accountsContext _accountsDb)
 {
     upwardDb   = _upwardDb;
     accountsDb = _accountsDb;
 }
示例#7
0
 public PutPackageController(StorageClient storageClient, accountsContext _accountsDb, upwardContext _upwardDb)
 {
     _storageClient = storageClient;
     upwardDb       = _upwardDb;
     accountsDb     = _accountsDb;
 }
示例#8
0
 public GetPackageController(upwardContext _upwardDb, StorageClient _storageClient)
 {
     upwardDb      = _upwardDb;
     storageClient = _storageClient;
 }