38 lines
1,022 B
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
|
|
}
|