drift(mobile): drift auth user sync

This commit is contained in:
wuzihao051119
2025-07-25 12:28:02 +08:00
parent ad65e9011a
commit 4677ceb03c
69 changed files with 9116 additions and 1206 deletions
+6 -6
View File
@@ -45,9 +45,9 @@ class Album {
bool activityEnabled;
@enumerated
SortOrder sortOrder;
final IsarLink<User> owner = IsarLink<User>();
final IsarLink<IsarUser> owner = IsarLink<IsarUser>();
final IsarLink<Asset> thumbnail = IsarLink<Asset>();
final IsarLinks<User> sharedUsers = IsarLinks<User>();
final IsarLinks<IsarUser> sharedUsers = IsarLinks<IsarUser>();
final IsarLinks<Asset> assets = IsarLinks<Asset>();
// transient fields
@@ -95,8 +95,8 @@ class Album {
// accessible in an object freshly created (not loaded from DB)
@ignore
Iterable<User> get remoteUsers =>
sharedUsers.isEmpty ? (sharedUsers as IsarLinksCommon<User>).addedObjects : sharedUsers;
Iterable<IsarUser> get remoteUsers =>
sharedUsers.isEmpty ? (sharedUsers as IsarLinksCommon<IsarUser>).addedObjects : sharedUsers;
@ignore
Iterable<Asset> get remoteAssets => assets.isEmpty ? (assets as IsarLinksCommon<Asset>).addedObjects : assets;
@@ -160,7 +160,7 @@ class Album {
activityEnabled: dto.isActivityEnabled,
);
a.remoteAssetCount = dto.assetCount;
a.owner.value = await db.users.getById(dto.ownerId);
a.owner.value = await db.isarUsers.getById(dto.ownerId);
if (dto.order != null) {
a.sortOrder = dto.order == AssetOrder.asc ? SortOrder.asc : SortOrder.desc;
}
@@ -169,7 +169,7 @@ class Album {
a.thumbnail.value = await db.assets.where().remoteIdEqualTo(dto.albumThumbnailAssetId).findFirst();
}
if (dto.albumUsers.isNotEmpty) {
final users = await db.users.getAllById(
final users = await db.isarUsers.getAllById(
dto.albumUsers.map((e) => e.user.id).toList(growable: false),
);
a.sharedUsers.addAll(users.cast());
+7 -6
View File
@@ -116,7 +116,7 @@ const AlbumSchema = CollectionSchema(
r'owner': LinkSchema(
id: 8272576585804958029,
name: r'owner',
target: r'User',
target: r'IsarUser',
single: true,
),
r'thumbnail': LinkSchema(
@@ -128,7 +128,7 @@ const AlbumSchema = CollectionSchema(
r'sharedUsers': LinkSchema(
id: 8972835302564625434,
name: r'sharedUsers',
target: r'User',
target: r'IsarUser',
single: false,
),
r'assets': LinkSchema(
@@ -275,10 +275,10 @@ List<IsarLinkBase<dynamic>> _albumGetLinks(Album object) {
void _albumAttach(IsarCollection<dynamic> col, Id id, Album object) {
object.id = id;
object.owner.attach(col, col.isar.collection<User>(), r'owner', id);
object.owner.attach(col, col.isar.collection<IsarUser>(), r'owner', id);
object.thumbnail.attach(col, col.isar.collection<Asset>(), r'thumbnail', id);
object.sharedUsers
.attach(col, col.isar.collection<User>(), r'sharedUsers', id);
.attach(col, col.isar.collection<IsarUser>(), r'sharedUsers', id);
object.assets.attach(col, col.isar.collection<Asset>(), r'assets', id);
}
@@ -1500,7 +1500,8 @@ extension AlbumQueryFilter on QueryBuilder<Album, Album, QFilterCondition> {
extension AlbumQueryObject on QueryBuilder<Album, Album, QFilterCondition> {}
extension AlbumQueryLinks on QueryBuilder<Album, Album, QFilterCondition> {
QueryBuilder<Album, Album, QAfterFilterCondition> owner(FilterQuery<User> q) {
QueryBuilder<Album, Album, QAfterFilterCondition> owner(
FilterQuery<IsarUser> q) {
return QueryBuilder.apply(this, (query) {
return query.link(q, r'owner');
});
@@ -1526,7 +1527,7 @@ extension AlbumQueryLinks on QueryBuilder<Album, Album, QFilterCondition> {
}
QueryBuilder<Album, Album, QAfterFilterCondition> sharedUsers(
FilterQuery<User> q) {
FilterQuery<IsarUser> q) {
return QueryBuilder.apply(this, (query) {
return query.link(q, r'sharedUsers');
});