Skip to content

Conversation

@leftybournes
Copy link
Contributor

No description provided.

Signed-off-by: Kent Delante <kent.delante@proton.me>
@leftybournes leftybournes force-pushed the leftybournes/fix/stable29-backports branch from e7af913 to 8089fab Compare December 18, 2025 07:29
Signed-off-by: Kent Delante <kent.delante@proton.me>
@leftybournes leftybournes force-pushed the leftybournes/fix/stable29-backports branch from 8f6158a to 1a58a72 Compare December 19, 2025 05:14
Signed-off-by: Kent Delante <kent.delante@proton.me>
Signed-off-by: Kent Delante <kent.delante@proton.me>
@leftybournes leftybournes force-pushed the leftybournes/fix/stable29-backports branch from 1a58a72 to 32cb3bb Compare December 19, 2025 05:28
@icewind1991
Copy link
Member

I'm not sure if a move command like this is the correct option. (Only setting the stored instance, not moving an actual object). Or if we want to extend https://github.com/nextcloud/multibucket_migrate instead, which does perform the object moving.

$count = 0;
foreach ($users as $user) {
if (!$input->getOption('dry-run')) {
$this->config->setUserValue($user->getUID(), 'homeobjectstore', 'objectstore', $objectStore);
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If we go with this version of the move command, I think it makes sense to validate that the target object store is valid for the user.

We could get the fileid for one of the user's files (if the user has at least one file) and check if an object with the matching urn exists it the target object store.

Without any checks the command would risk being a big footgun.

@icewind1991
Copy link
Member

Outside of the move command the changes look good

Signed-off-by: Kent Delante <kent.delante@proton.me>
@leftybournes leftybournes force-pushed the leftybournes/fix/stable29-backports branch from 6b1a26e to fc30176 Compare December 23, 2025 07:39
@leftybournes
Copy link
Contributor Author

I'm not sure if a move command like this is the correct option. (Only setting the stored instance, not moving an actual object). Or if we want to extend https://github.com/nextcloud/multibucket_migrate instead, which does perform the object moving.

I think extending multibucket_migrate is the way to go since that's already available instead of adding the move command.

}

$homeStorage = $homeMount->getStorage();
$storageId = $homeStorage->getCache()->getNumericStorageId();

Check notice

Code scanning / Psalm

PossiblyNullReference Note

Cannot call method getCache on possibly null value
->from('filecache')
->where($query->expr()->eq('storage', $query->createNamedParameter($storageId, IQueryBuilder::PARAM_INT)))
->andWhere($query->expr()->neq('mimetype', $query->createNamedParameter($folderMimetype, IQueryBuilder::PARAM_INT)));
$result = $query->execute();

Check notice

Code scanning / Psalm

DeprecatedMethod Note

The method OCP\DB\QueryBuilder\IQueryBuilder::execute has been marked as deprecated
->where($query->expr()->eq('storage', $query->createNamedParameter($storageId, IQueryBuilder::PARAM_INT)))
->andWhere($query->expr()->neq('mimetype', $query->createNamedParameter($folderMimetype, IQueryBuilder::PARAM_INT)));
$result = $query->execute();
$fileIds = $result->fetchAll(\PDO::FETCH_COLUMN);

Check notice

Code scanning / Psalm

PossiblyInvalidMethodCall Note

Cannot call method on possible int variable $result
Comment on lines +119 to +124
$query = $this->connection->getQueryBuilder();
$query->select('fileid')
->from('filecache')
->where($query->expr()->eq('storage', $query->createNamedParameter($storageId, IQueryBuilder::PARAM_INT)))
->andWhere($query->expr()->neq('mimetype', $query->createNamedParameter($folderMimetype, IQueryBuilder::PARAM_INT)));
$result = $query->execute();
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Since we already have the storage/cache, we can just do $storage->getCache()->getId('')

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Wouldn't that give the id of a user's root folder, which doesn't get saved as an object?

Signed-off-by: Kent Delante <kent.delante@proton.me>
@leftybournes leftybournes force-pushed the leftybournes/fix/stable29-backports branch from a3fbe3d to 84f7093 Compare January 9, 2026 07:59
}

$currentBucket = $this->objectStoreConfig->getSetBucketForUser($user);
if (!$currentBucket) {

Check notice

Code scanning / Psalm

RiskyTruthyFalsyComparison Note

Operand of type null|string contains type string, which can be falsy and truthy. This can cause possibly unexpected behavior. Use strict comparison instead.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants