Пример #1
0
func main() {
	var err error

	box.ParseFlags()

	// Box connections
	var (
		database *box.Database

		storage *box.Storage
	)

	// Connect to database
	database, err = box.ConnectDatabase()
	if err != nil {
		box.LogFatal("%v", err)
	}

	defer database.Close()

	// Connect to storage
	storage, err = box.ConnectStorage()
	if err != nil {
		box.LogFatal("%v", err)
	}

	defer storage.Close()

	// Open transaction
	var transaction *box.Transaction

	transaction, err = database.BeginTransaction()
	if err != nil {
		box.LogFatal("%v", err)
	}

	defer transaction.Rollback()

	// Find all expired uploads
	var ids []string

	// Get all ids in storage
	ids, err = storage.List()
	if err != nil {
		box.LogFatal("%v", err)
	}

	// Remove all expired uploads from storage
	for _, id := range ids {
		var expired bool

		// Query if the file is expired
		expired, err = transaction.QueryExpiredUpload(id)
		if err != nil {
			box.LogFatal("%v", err)
		}

		if expired {
			box.LogDebug("Removing file: %s", id)

			err = storage.Remove(id)
			if err != os.ErrNotExist {
				// File is already gone - ignore it
			} else if err != nil {
				box.LogError("%v", err)
			}
		}
	}
}