|
|
|
|
@ -28,6 +28,24 @@ class MetadataRequestService { |
|
|
|
|
) { |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private function getStorageId(IFilesMetadata $filesMetadata): int { |
|
|
|
|
if ($filesMetadata instanceof FilesMetadata && $filesMetadata->getStorageId()) { |
|
|
|
|
return $filesMetadata->getStorageId(); |
|
|
|
|
} |
|
|
|
|
// all code paths that lead to saving metadata *should* have the storage id set |
|
|
|
|
// this fallback is there just in case |
|
|
|
|
$query = $this->dbConnection->getQueryBuilder(); |
|
|
|
|
$query->select('storage') |
|
|
|
|
->from('filecache') |
|
|
|
|
->where($query->expr()->eq('fileid', $query->createNamedParameter($filesMetadata->getFileId(), IQueryBuilder::PARAM_INT))); |
|
|
|
|
$storageId = $query->executeQuery()->fetchColumn(); |
|
|
|
|
|
|
|
|
|
if ($filesMetadata instanceof FilesMetadata) { |
|
|
|
|
$filesMetadata->setStorageId($storageId); |
|
|
|
|
} |
|
|
|
|
return $storageId; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* store metadata into database |
|
|
|
|
* |
|
|
|
|
@ -38,6 +56,7 @@ class MetadataRequestService { |
|
|
|
|
public function store(IFilesMetadata $filesMetadata): void { |
|
|
|
|
$qb = $this->dbConnection->getQueryBuilder(); |
|
|
|
|
$qb->insert(self::TABLE_METADATA) |
|
|
|
|
->hintShardKey('storage', $this->getStorageId($filesMetadata)) |
|
|
|
|
->setValue('file_id', $qb->createNamedParameter($filesMetadata->getFileId(), IQueryBuilder::PARAM_INT)) |
|
|
|
|
->setValue('json', $qb->createNamedParameter(json_encode($filesMetadata->jsonSerialize()))) |
|
|
|
|
->setValue('sync_token', $qb->createNamedParameter($this->generateSyncToken())) |
|
|
|
|
@ -134,6 +153,7 @@ class MetadataRequestService { |
|
|
|
|
$expr = $qb->expr(); |
|
|
|
|
|
|
|
|
|
$qb->update(self::TABLE_METADATA) |
|
|
|
|
->hintShardKey('files_metadata', $this->getStorageId($filesMetadata)) |
|
|
|
|
->set('json', $qb->createNamedParameter(json_encode($filesMetadata->jsonSerialize()))) |
|
|
|
|
->set('sync_token', $qb->createNamedParameter($this->generateSyncToken())) |
|
|
|
|
->set('last_update', $qb->createFunction('NOW()')) |
|
|
|
|
|