mirror of
https://github.com/get-drexa/drive.git
synced 2026-02-02 19:11:17 +00:00
58 lines
2.1 KiB
Go
58 lines
2.1 KiB
Go
package sharing
|
|
|
|
import (
|
|
"time"
|
|
|
|
"github.com/google/uuid"
|
|
"github.com/uptrace/bun"
|
|
)
|
|
|
|
// Share represents a share link for files or directories
|
|
// @Description Share link information including expiration and timestamps
|
|
type Share struct {
|
|
bun.BaseModel `bun:"node_shares"`
|
|
|
|
ID uuid.UUID `bun:",pk,type:uuid" json:"-"`
|
|
DriveID uuid.UUID `bun:"drive_id,notnull,type:uuid" json:"-"`
|
|
CreatedByAccountID uuid.UUID `bun:"created_by_account_id,notnull,type:uuid" json:"-"`
|
|
// Unique share identifier (public ID)
|
|
PublicID string `bun:"public_id,notnull" json:"id" example:"kRp2XYTq9A55"`
|
|
SharedDirectoryID uuid.UUID `bun:"shared_directory_id,notnull,type:uuid" json:"-"`
|
|
RevokedAt *time.Time `bun:"revoked_at" json:"-"`
|
|
// When the share expires, null if it never expires (ISO 8601)
|
|
ExpiresAt *time.Time `bun:"expires_at" json:"expiresAt" example:"2025-01-15T00:00:00Z"`
|
|
// When the share was created (ISO 8601)
|
|
CreatedAt time.Time `bun:"created_at,notnull" json:"createdAt" example:"2024-12-13T15:04:05Z"`
|
|
// When the share was last updated (ISO 8601)
|
|
UpdatedAt time.Time `bun:"updated_at,notnull" json:"updatedAt" example:"2024-12-13T16:30:00Z"`
|
|
}
|
|
|
|
type SharePermission struct {
|
|
bun.BaseModel `bun:"share_permissions"`
|
|
|
|
ID uuid.UUID `bun:",pk,type:uuid"`
|
|
ShareID uuid.UUID `bun:"share_id,notnull,type:uuid"`
|
|
AccountID *uuid.UUID `bun:"account_id,type:uuid"`
|
|
CanRead bool `bun:"can_read,notnull"`
|
|
CanWrite bool `bun:"can_write,notnull"`
|
|
CanDelete bool `bun:"can_delete,notnull"`
|
|
CanUpload bool `bun:"can_upload,notnull"`
|
|
ExpiresAt *time.Time `bun:"expires_at"`
|
|
CreatedAt time.Time `bun:"created_at,notnull"`
|
|
UpdatedAt time.Time `bun:"updated_at,notnull"`
|
|
}
|
|
|
|
type ShareItem struct {
|
|
bun.BaseModel `bun:"share_items"`
|
|
|
|
ID uuid.UUID `bun:",pk,type:uuid"`
|
|
ShareID uuid.UUID `bun:"share_id,notnull,type:uuid"`
|
|
NodeID uuid.UUID `bun:"node_id,notnull,type:uuid"`
|
|
CreatedAt time.Time `bun:"created_at,notnull"`
|
|
UpdatedAt time.Time `bun:"updated_at,notnull"`
|
|
}
|
|
|
|
func generateInternalID() (uuid.UUID, error) {
|
|
return uuid.NewV7()
|
|
}
|