Allow NULL org_id in file_share_links for personal file sharing, update model and handlers
This commit is contained in:
@@ -1153,22 +1153,38 @@ func (db *DB) MarkChallengeUsed(ctx context.Context, challenge []byte) error {
|
||||
// FileShareLink methods
|
||||
|
||||
// CreateFileShareLink creates a new share link for a file
|
||||
func (db *DB) CreateFileShareLink(ctx context.Context, token string, fileID, orgID, createdByUserID uuid.UUID) (*models.FileShareLink, error) {
|
||||
func (db *DB) CreateFileShareLink(ctx context.Context, token string, fileID uuid.UUID, orgID *uuid.UUID, createdByUserID uuid.UUID) (*models.FileShareLink, error) {
|
||||
var link models.FileShareLink
|
||||
var expiresAtNull sql.NullTime
|
||||
var orgIDNull sql.NullString
|
||||
err := db.QueryRowContext(ctx, `
|
||||
INSERT INTO file_share_links (token, file_id, org_id, created_by_user_id)
|
||||
VALUES ($1, $2, $3, $4)
|
||||
RETURNING id, token, file_id, org_id, created_by_user_id, created_at, updated_at, expires_at, is_revoked
|
||||
`, token, fileID, orgID, createdByUserID).Scan(
|
||||
&link.ID, &link.Token, &link.FileID, &link.OrgID, &link.CreatedByUserID,
|
||||
&link.CreatedAt, &link.UpdatedAt, &link.ExpiresAt, &link.IsRevoked)
|
||||
return &link, err
|
||||
&link.ID, &link.Token, &link.FileID, &orgIDNull, &link.CreatedByUserID,
|
||||
&link.CreatedAt, &link.UpdatedAt, &expiresAtNull, &link.IsRevoked)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if orgIDNull.Valid {
|
||||
parsed, err := uuid.Parse(orgIDNull.String)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
link.OrgID = &parsed
|
||||
}
|
||||
if expiresAtNull.Valid {
|
||||
link.ExpiresAt = &expiresAtNull.Time
|
||||
}
|
||||
return &link, nil
|
||||
}
|
||||
|
||||
// GetFileShareLinkByFileID gets the active share link for a file
|
||||
func (db *DB) GetFileShareLinkByFileID(ctx context.Context, fileID uuid.UUID) (*models.FileShareLink, error) {
|
||||
var link models.FileShareLink
|
||||
var expiresAtNull sql.NullTime
|
||||
var orgIDNull sql.NullString
|
||||
err := db.QueryRowContext(ctx, `
|
||||
SELECT id, token, file_id, org_id, created_by_user_id, created_at, updated_at, expires_at, is_revoked
|
||||
FROM file_share_links
|
||||
@@ -1176,11 +1192,18 @@ func (db *DB) GetFileShareLinkByFileID(ctx context.Context, fileID uuid.UUID) (*
|
||||
ORDER BY created_at DESC
|
||||
LIMIT 1
|
||||
`, fileID).Scan(
|
||||
&link.ID, &link.Token, &link.FileID, &link.OrgID, &link.CreatedByUserID,
|
||||
&link.ID, &link.Token, &link.FileID, &orgIDNull, &link.CreatedByUserID,
|
||||
&link.CreatedAt, &link.UpdatedAt, &expiresAtNull, &link.IsRevoked)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if orgIDNull.Valid {
|
||||
parsed, err := uuid.Parse(orgIDNull.String)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
link.OrgID = &parsed
|
||||
}
|
||||
if expiresAtNull.Valid {
|
||||
link.ExpiresAt = &expiresAtNull.Time
|
||||
}
|
||||
@@ -1191,16 +1214,24 @@ func (db *DB) GetFileShareLinkByFileID(ctx context.Context, fileID uuid.UUID) (*
|
||||
func (db *DB) GetFileShareLinkByToken(ctx context.Context, token string) (*models.FileShareLink, error) {
|
||||
var link models.FileShareLink
|
||||
var expiresAtNull sql.NullTime
|
||||
var orgIDNull sql.NullString
|
||||
err := db.QueryRowContext(ctx, `
|
||||
SELECT id, token, file_id, org_id, created_by_user_id, created_at, updated_at, expires_at, is_revoked
|
||||
FROM file_share_links
|
||||
WHERE token = $1 AND is_revoked = FALSE AND (expires_at IS NULL OR expires_at > NOW())
|
||||
`, token).Scan(
|
||||
&link.ID, &link.Token, &link.FileID, &link.OrgID, &link.CreatedByUserID,
|
||||
&link.ID, &link.Token, &link.FileID, &orgIDNull, &link.CreatedByUserID,
|
||||
&link.CreatedAt, &link.UpdatedAt, &expiresAtNull, &link.IsRevoked)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if orgIDNull.Valid {
|
||||
parsed, err := uuid.Parse(orgIDNull.String)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
link.OrgID = &parsed
|
||||
}
|
||||
if expiresAtNull.Valid {
|
||||
link.ExpiresAt = &expiresAtNull.Time
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user