Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions cmd/backup/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,7 @@ type Config struct {
GoogleDriveImpersonateSubject string `split_words:"true"`
GoogleDriveEndpoint string `split_words:"true"`
GoogleDriveTokenURL string `split_words:"true"`
GoogleDriveTeamDriveID string `split_words:"true"`
Timezone string `envconfig:"TZ"`
source string
additionalEnvVars map[string]string
Expand Down
1 change: 1 addition & 0 deletions cmd/backup/script.go
Original file line number Diff line number Diff line change
Expand Up @@ -259,6 +259,7 @@ func (s *script) init() error {
ImpersonateSubject: s.c.GoogleDriveImpersonateSubject,
Endpoint: s.c.GoogleDriveEndpoint,
TokenURL: s.c.GoogleDriveTokenURL,
TeamDriveID: s.c.GoogleDriveTeamDriveID,
}
googleDriveBackend, err := googledrive.NewStorageBackend(googleDriveConfig, logFunc)
if err != nil {
Expand Down
10 changes: 8 additions & 2 deletions internal/storage/googledrive/googledrive.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,8 @@ import (

type googleDriveStorage struct {
storage.StorageBackend
client *drive.Service
client *drive.Service
teamDriveID string
}

// Config allows to configure a Google Drive storage backend.
Expand All @@ -34,6 +35,7 @@ type Config struct {
ImpersonateSubject string
Endpoint string
TokenURL string
TeamDriveID string
}

// NewStorageBackend creates and initializes a new Google Drive storage backend.
Expand Down Expand Up @@ -77,7 +79,8 @@ func NewStorageBackend(opts Config, logFunc storage.Log) (storage.Backend, error
DestinationPath: opts.FolderID,
Log: logFunc,
},
client: srv,
client: srv,
teamDriveID: opts.TeamDriveID,
}, nil
}

Expand Down Expand Up @@ -134,6 +137,9 @@ func (b *googleDriveStorage) Prune(deadline time.Time, pruningPrefix string) (*s
pageToken := ""
for {
req := b.client.Files.List().Q(query).SupportsAllDrives(true).Fields("files(id, name, createdTime, parents)").PageToken(pageToken)
if b.teamDriveID != "" {
req = req.DriveId(b.teamDriveID).IncludeItemsFromAllDrives(true)
}
res, err := req.Do()
if err != nil {
return nil, errwrap.Wrap(err, "listing files")
Expand Down
Loading