monorepo/cloud/maplefile-backend/internal/repo/filemetadata/check.go

38 lines
1,022 B
Go

// monorepo/cloud/maplefile-backend/internal/maplefile/repo/filemetadata/check.go
package filemetadata
import (
"fmt"
"github.com/gocql/gocql"
)
func (impl *fileMetadataRepositoryImpl) CheckIfExistsByID(id gocql.UUID) (bool, error) {
var count int
query := `SELECT COUNT(*) FROM maplefile.files_by_id WHERE id = ?`
if err := impl.Session.Query(query, id).Scan(&count); err != nil {
return false, fmt.Errorf("failed to check file existence: %w", err)
}
return count > 0, nil
}
func (impl *fileMetadataRepositoryImpl) CheckIfUserHasAccess(fileID gocql.UUID, userID gocql.UUID) (bool, error) {
// Check if user has access via the user sync table
var count int
query := `SELECT COUNT(*) FROM maplefile.files_by_user
WHERE user_id = ? AND id = ? LIMIT 1 ALLOW FILTERING`
err := impl.Session.Query(query, userID, fileID).Scan(&count)
if err != nil {
if err == gocql.ErrNotFound {
return false, nil
}
return false, fmt.Errorf("failed to check file access: %w", err)
}
return count > 0, nil
}