Merge pull request #59 from fossyy/staging

Staging
This commit is contained in:
2024-09-15 17:58:41 +07:00
committed by GitHub
5 changed files with 47 additions and 1 deletions

View File

@ -261,6 +261,20 @@ func (db *mySQLdb) GetFiles(ownerID string) ([]*models.File, error) {
return files, err return files, err
} }
func (db *mySQLdb) IncrementDownloadCount(fileID string) error {
var file models.File
err := db.DB.Table("files").Where("id = ?", fileID).First(&file).Error
if err != nil {
return err
}
file.Downloaded = file.Downloaded + 1
err = db.DB.Updates(file).Error
if err != nil {
return err
}
return nil
}
func (db *mySQLdb) InitializeTotp(email string, secret string) error { func (db *mySQLdb) InitializeTotp(email string, secret string) error {
var user models.User var user models.User
err := db.DB.Table("users").Where("email = ?", email).First(&user).Error err := db.DB.Table("users").Where("email = ?", email).First(&user).Error
@ -398,6 +412,20 @@ func (db *postgresDB) GetFiles(ownerID string) ([]*models.File, error) {
return files, err return files, err
} }
func (db *postgresDB) IncrementDownloadCount(fileID string) error {
var file models.File
err := db.DB.Table("files").Where("id = $1", fileID).First(&file).Error
if err != nil {
return err
}
file.Downloaded = file.Downloaded + 1
err = db.DB.Updates(file).Error
if err != nil {
return err
}
return nil
}
func (db *postgresDB) InitializeTotp(email string, secret string) error { func (db *postgresDB) InitializeTotp(email string, secret string) error {
var user models.User var user models.User
err := db.DB.Table("users").Where("email = $1", email).First(&user).Error err := db.DB.Table("users").Where("email = $1", email).First(&user).Error

View File

@ -68,6 +68,7 @@ func GET(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Length", fmt.Sprintf("%d", file.Size)) w.Header().Set("Content-Length", fmt.Sprintf("%d", file.Size))
sendFileChunk(w, saveFolder, file, 0, int64(file.Size-1)) sendFileChunk(w, saveFolder, file, 0, int64(file.Size-1))
return
} }
func sendFileChunk(w http.ResponseWriter, saveFolder string, file *models.File, start, end int64) { func sendFileChunk(w http.ResponseWriter, saveFolder string, file *models.File, start, end int64) {
@ -130,6 +131,14 @@ func sendFileChunk(w http.ResponseWriter, saveFolder string, file *models.File,
return return
} }
toSend -= int64(n) toSend -= int64(n)
if i == int64(file.TotalChunk)-1 && toSend == 0 {
err := app.Server.Database.IncrementDownloadCount(file.ID.String())
if err != nil {
http.Error(w, fmt.Sprintf("Error writing chunk: %v", err), http.StatusInternalServerError)
app.Server.Logger.Error(err.Error())
return
}
}
} }
} }
} }

View File

@ -93,5 +93,6 @@ func POST(w http.ResponseWriter, r *http.Request) {
return return
} }
w.WriteHeader(http.StatusAccepted)
return return
} }

View File

@ -163,10 +163,17 @@ async function uploadChunks(name, size, chunks, chunkArray, FileID) {
const startTime = performance.now(); const startTime = performance.now();
try { try {
await fetch(`/file/${FileID}`, { const request = await fetch(`/file/${FileID}`, {
method: 'POST', method: 'POST',
body: formData body: formData
}); });
console.log(request.status)
if (request.status !== 202) {
ChangeModal("Error", "There was an issue with your upload. Please try again later or contact support if the problem persists.")
toggleModal();
isFailed = true
break
}
} catch (error) { } catch (error) {
ChangeModal("Error", "There was an issue with your upload. Please try again later or contact support if the problem persists.") ChangeModal("Error", "There was an issue with your upload. Please try again later or contact support if the problem persists.")
toggleModal(); toggleModal();

View File

@ -59,6 +59,7 @@ type Database interface {
GetFile(fileID string) (*models.File, error) GetFile(fileID string) (*models.File, error)
GetUserFile(name string, ownerID string) (*models.File, error) GetUserFile(name string, ownerID string) (*models.File, error)
GetFiles(ownerID string) ([]*models.File, error) GetFiles(ownerID string) ([]*models.File, error)
IncrementDownloadCount(fileID string) error
InitializeTotp(email string, secret string) error InitializeTotp(email string, secret string) error
} }