2025-06-16 20:37:45 +05:30
|
|
|
import 'remote_asset.entity.dart';
|
|
|
|
|
import 'local_asset.entity.dart';
|
2025-07-18 10:01:04 +05:30
|
|
|
import 'stack.entity.dart';
|
2025-06-16 20:37:45 +05:30
|
|
|
|
2025-07-03 01:25:14 +08:00
|
|
|
mergedAsset: SELECT * FROM
|
2025-06-16 20:37:45 +05:30
|
|
|
(
|
|
|
|
|
SELECT
|
|
|
|
|
rae.id as remote_id,
|
|
|
|
|
lae.id as local_id,
|
|
|
|
|
rae.name,
|
|
|
|
|
rae."type",
|
|
|
|
|
rae.created_at,
|
|
|
|
|
rae.updated_at,
|
|
|
|
|
rae.width,
|
|
|
|
|
rae.height,
|
|
|
|
|
rae.duration_in_seconds,
|
|
|
|
|
rae.is_favorite,
|
|
|
|
|
rae.thumb_hash,
|
|
|
|
|
rae.checksum,
|
2025-07-09 20:04:25 +05:30
|
|
|
rae.owner_id,
|
2025-07-15 00:53:24 +05:30
|
|
|
rae.live_photo_video_id,
|
2025-07-18 10:01:04 +05:30
|
|
|
0 as orientation,
|
|
|
|
|
rae.stack_id,
|
|
|
|
|
COALESCE(stack_count.total_count, 0) AS stack_count
|
2025-06-16 20:37:45 +05:30
|
|
|
FROM
|
|
|
|
|
remote_asset_entity rae
|
|
|
|
|
LEFT JOIN
|
|
|
|
|
local_asset_entity lae ON rae.checksum = lae.checksum
|
2025-07-18 10:01:04 +05:30
|
|
|
LEFT JOIN
|
|
|
|
|
stack_entity se ON rae.stack_id = se.id
|
|
|
|
|
LEFT JOIN
|
|
|
|
|
(SELECT
|
|
|
|
|
stack_id,
|
|
|
|
|
COUNT(*) AS total_count
|
|
|
|
|
FROM remote_asset_entity
|
|
|
|
|
WHERE deleted_at IS NULL
|
|
|
|
|
AND visibility = 0
|
|
|
|
|
AND stack_id IS NOT NULL
|
|
|
|
|
GROUP BY stack_id
|
|
|
|
|
) AS stack_count ON rae.stack_id = stack_count.stack_id
|
2025-06-16 20:37:45 +05:30
|
|
|
WHERE
|
2025-07-18 10:01:04 +05:30
|
|
|
rae.deleted_at IS NULL
|
|
|
|
|
AND rae.visibility = 0
|
|
|
|
|
AND rae.owner_id in ?
|
|
|
|
|
AND (
|
|
|
|
|
rae.stack_id IS NULL
|
|
|
|
|
OR rae.id = se.primary_asset_id
|
|
|
|
|
)
|
2025-06-16 20:37:45 +05:30
|
|
|
UNION ALL
|
|
|
|
|
SELECT
|
|
|
|
|
NULL as remote_id,
|
|
|
|
|
lae.id as local_id,
|
|
|
|
|
lae.name,
|
|
|
|
|
lae."type",
|
|
|
|
|
lae.created_at,
|
|
|
|
|
lae.updated_at,
|
|
|
|
|
lae.width,
|
|
|
|
|
lae.height,
|
|
|
|
|
lae.duration_in_seconds,
|
|
|
|
|
lae.is_favorite,
|
|
|
|
|
NULL as thumb_hash,
|
|
|
|
|
lae.checksum,
|
2025-07-09 20:04:25 +05:30
|
|
|
NULL as owner_id,
|
2025-07-15 00:53:24 +05:30
|
|
|
NULL as live_photo_video_id,
|
2025-07-18 10:01:04 +05:30
|
|
|
lae.orientation,
|
|
|
|
|
NULL as stack_id,
|
|
|
|
|
0 AS stack_count
|
2025-06-16 20:37:45 +05:30
|
|
|
FROM
|
|
|
|
|
local_asset_entity lae
|
|
|
|
|
LEFT JOIN
|
|
|
|
|
remote_asset_entity rae ON rae.checksum = lae.checksum
|
|
|
|
|
WHERE
|
|
|
|
|
rae.id IS NULL
|
|
|
|
|
)
|
|
|
|
|
ORDER BY created_at DESC
|
|
|
|
|
LIMIT $limit;
|
|
|
|
|
|
2025-07-03 01:25:14 +08:00
|
|
|
mergedBucket(:group_by AS INTEGER):
|
|
|
|
|
SELECT
|
2025-06-16 20:37:45 +05:30
|
|
|
COUNT(*) as asset_count,
|
|
|
|
|
CASE
|
2025-07-02 23:54:37 +05:30
|
|
|
WHEN :group_by = 0 THEN STRFTIME('%Y-%m-%d', created_at, 'localtime') -- day
|
|
|
|
|
WHEN :group_by = 1 THEN STRFTIME('%Y-%m', created_at, 'localtime') -- month
|
2025-06-16 20:37:45 +05:30
|
|
|
END AS bucket_date
|
|
|
|
|
FROM
|
|
|
|
|
(
|
|
|
|
|
SELECT
|
|
|
|
|
rae.name,
|
|
|
|
|
rae.created_at
|
|
|
|
|
FROM
|
|
|
|
|
remote_asset_entity rae
|
|
|
|
|
LEFT JOIN
|
|
|
|
|
local_asset_entity lae ON rae.checksum = lae.checksum
|
2025-07-18 10:01:04 +05:30
|
|
|
LEFT JOIN
|
|
|
|
|
stack_entity se ON rae.stack_id = se.id
|
2025-06-16 20:37:45 +05:30
|
|
|
WHERE
|
2025-07-18 10:01:04 +05:30
|
|
|
rae.deleted_at IS NULL
|
|
|
|
|
AND rae.visibility = 0
|
|
|
|
|
AND rae.owner_id in ?
|
|
|
|
|
AND (
|
|
|
|
|
rae.stack_id IS NULL
|
|
|
|
|
OR rae.id = se.primary_asset_id
|
|
|
|
|
)
|
2025-06-16 20:37:45 +05:30
|
|
|
UNION ALL
|
|
|
|
|
SELECT
|
|
|
|
|
lae.name,
|
|
|
|
|
lae.created_at
|
|
|
|
|
FROM
|
|
|
|
|
local_asset_entity lae
|
|
|
|
|
LEFT JOIN
|
|
|
|
|
remote_asset_entity rae ON rae.checksum = lae.checksum
|
|
|
|
|
WHERE
|
|
|
|
|
rae.id IS NULL
|
|
|
|
|
)
|
|
|
|
|
GROUP BY bucket_date
|
|
|
|
|
ORDER BY bucket_date DESC;
|