func()

in internal/repo/explore.go [136:178]


func (e *Explore) GetPathSummary(path string) (*model.Summary, error) {
	var summary model.Summary

	query := `
		SELECT
			name,
			size_standard,
			size_nearline,
			size_coldline,
			size_archive	
		FROM
			directory
		WHERE
			name = $1;
	`

	row := e.DB.QueryRowx(query, path)
	if err := row.StructScan(&summary); err != nil && err != sql.ErrNoRows {
		return nil, err
	}

	// Compute pricing
	storageClasses := []struct {
		class StorageClass
		size  *int64
		cost  *float64
	}{
		{StorageStandard, &summary.Size.Standard, &summary.Cost.Standard},
		{StorageNearline, &summary.Size.Nearline, &summary.Cost.Nearline},
		{StorageColdline, &summary.Size.Coldline, &summary.Cost.Coldline},
		{StorageArchive, &summary.Size.Archive, &summary.Cost.Archive},
	}

	for _, sc := range storageClasses {
		cost, err := getObjectCost(defaultLocation, sc.class, *sc.size)
		if err != nil {
			return nil, err
		}
		*sc.cost = cost
	}

	return &summary, nil
}