[mob] Rename face tables

This commit is contained in:
Neeraj Gupta 2024-04-01 16:05:23 +05:30
parent baec7a2af8
commit 323521d496
3 changed files with 47 additions and 29 deletions

View file

@ -50,7 +50,7 @@ class FaceMLDataDB {
Future _onCreate(Database db, int version) async {
await db.execute(createFacesTable);
await db.execute(createPersonTable);
await db.execute(createClusterTable);
await db.execute(createClusterPersonTable);
await db.execute(createClusterSummaryTable);
await db.execute(createNotPersonFeedbackTable);
}
@ -137,7 +137,7 @@ class FaceMLDataDB {
final db = await instance.database;
// find out clusterIds that are assigned to other persons using the clusters table
final List<Map<String, dynamic>> maps = await db.rawQuery(
'SELECT $cluserIDColumn FROM $clustersTable WHERE $personIdColumn != ? AND $personIdColumn IS NOT NULL',
'SELECT $cluserIDColumn FROM $clusterPersonTable WHERE $personIdColumn != ? AND $personIdColumn IS NOT NULL',
[personID],
);
final Set<int> ignoredClusterIDs =
@ -154,7 +154,7 @@ class FaceMLDataDB {
Future<Set<int>> getPersonClusterIDs(String personID) async {
final db = await instance.database;
final List<Map<String, dynamic>> maps = await db.rawQuery(
'SELECT $cluserIDColumn FROM $clustersTable WHERE $personIdColumn = ?',
'SELECT $cluserIDColumn FROM $clusterPersonTable WHERE $personIdColumn = ?',
[personID],
);
return maps.map((e) => e[cluserIDColumn] as int).toSet();
@ -163,7 +163,7 @@ class FaceMLDataDB {
Future<void> clearTable() async {
final db = await instance.database;
await db.delete(facesTable);
await db.delete(clustersTable);
await db.delete(clusterPersonTable);
await db.delete(clusterSummaryTable);
await db.delete(personTable);
await db.delete(notPersonFeedback);
@ -220,7 +220,7 @@ class FaceMLDataDB {
}
}
final cluterRows = await db.query(
clustersTable,
clusterPersonTable,
columns: [cluserIDColumn],
where: '$personIdColumn = ?',
whereArgs: [personID],
@ -450,7 +450,7 @@ class FaceMLDataDB {
conflictAlgorithm: ConflictAlgorithm.replace,
);
await db.insert(
clustersTable,
clusterPersonTable,
{
personIdColumn: p.remoteID,
cluserIDColumn: cluserID,
@ -475,7 +475,7 @@ class FaceMLDataDB {
}) async {
final db = await instance.database;
await db.insert(
clustersTable,
clusterPersonTable,
{
personIdColumn: personID,
cluserIDColumn: clusterID,
@ -503,7 +503,7 @@ class FaceMLDataDB {
}) async {
final db = await instance.database;
return db.delete(
clustersTable,
clusterPersonTable,
where: '$personIdColumn = ? AND $cluserIDColumn = ?',
whereArgs: [personID, clusterID],
);
@ -514,10 +514,10 @@ class FaceMLDataDB {
final db = instance.database;
return db.then((db) async {
final List<Map<String, dynamic>> maps = await db.rawQuery(
'SELECT $clustersTable.$cluserIDColumn, $fileIDColumn FROM $facesTable '
'INNER JOIN $clustersTable '
'ON $facesTable.$faceClusterId = $clustersTable.$cluserIDColumn '
'WHERE $clustersTable.$personIdColumn = ?',
'SELECT $clusterPersonTable.$cluserIDColumn, $fileIDColumn FROM $facesTable '
'INNER JOIN $clusterPersonTable '
'ON $facesTable.$faceClusterId = $clusterPersonTable.$cluserIDColumn '
'WHERE $clusterPersonTable.$personIdColumn = ?',
[personID],
);
final Map<int, Set<int>> result = {};
@ -598,7 +598,7 @@ class FaceMLDataDB {
personMap[p.remoteID] = p;
}
final List<Map<String, dynamic>> maps = await db.rawQuery(
'SELECT $personIdColumn, $cluserIDColumn FROM $clustersTable',
'SELECT $personIdColumn, $cluserIDColumn FROM $clusterPersonTable',
);
final Map<int, Person> result = {};
@ -636,38 +636,38 @@ class FaceMLDataDB {
if (faces) {
await db.execute(deleteFacesTable);
await db.execute(createFacesTable);
await db.execute(dropFaceClustersTable);
await db.execute(createFaceClustersTable);
}
await db.execute(deletePersonTable);
await db.execute(dropClustersTable);
await db.execute(dropClusterPersonTable);
await db.execute(dropClusterSummaryTable);
await db.execute(dropNotPersonFeedbackTable);
await db.execute(createPersonTable);
await db.execute(createClusterTable);
await db.execute(createClusterPersonTable);
await db.execute(createNotPersonFeedbackTable);
await db.execute(createClusterSummaryTable);
}
/// WARNING: This will delete ALL data in the database! Only use this for debug/testing purposes!
Future<void> dropPersonTable() async {
Future<void> dropFeedbackTables() async {
final db = await instance.database;
await db.execute(deletePersonTable);
await db.execute(dropClustersTable);
await db.execute(dropClusterPersonTable);
await db.execute(dropNotPersonFeedbackTable);
// await db.execute(createFacesTable);
await db.execute(createPersonTable);
await db.execute(createClusterTable);
await db.execute(createClusterPersonTable);
await db.execute(createNotPersonFeedbackTable);
}
Future<void> removeFilesFromPerson(List<EnteFile> files, Person p) async {
final db = await instance.database;
final result = await db.rawQuery(
'SELECT $faceIDColumn FROM $facesTable LEFT JOIN $clustersTable '
'ON $facesTable.$faceClusterId = $clustersTable.$cluserIDColumn '
'WHERE $clustersTable.$personIdColumn = ? AND $facesTable.$fileIDColumn IN (${files.map((e) => e.uploadedFileID).join(",")})',
'SELECT $faceIDColumn FROM $facesTable LEFT JOIN $clusterPersonTable '
'ON $facesTable.$faceClusterId = $clusterPersonTable.$cluserIDColumn '
'WHERE $clusterPersonTable.$personIdColumn = ? AND $facesTable.$fileIDColumn IN (${files.map((e) => e.uploadedFileID).join(",")})',
[p.remoteID],
);
// get max clusterID

View file

@ -27,8 +27,26 @@ const createFacesTable = '''CREATE TABLE IF NOT EXISTS $facesTable (
const deleteFacesTable = 'DROP TABLE IF EXISTS $facesTable';
// End of Faces Table Fields & Schema Queries
//##region Face Clusters Table Fields & Schema Queries
const faceClustersTable = 'face_clusters';
const fcClusterID = 'cluster_id';
const fcFaceId = 'face_id';
// fcClusterId & fcFaceId are the primary keys and fcClusterId is a foreign key to faces table
const createFaceClustersTable = '''
CREATE TABLE IF NOT EXISTS $faceClustersTable (
$fcClusterID INTEGER NOT NULL,
$fcFaceId TEXT NOT NULL,
PRIMARY KEY($fcClusterID, $fcFaceId),
FOREIGN KEY($fcFaceId) REFERENCES $facesTable($faceIDColumn)
);
''';
const dropFaceClustersTable = 'DROP TABLE IF EXISTS $faceClustersTable';
//##endregion
// People Table Fields & Schema Queries
const personTable = 'people';
const personTable = 'person';
const idColumn = 'id';
const nameColumn = 'name';
const personHiddenColumn = 'hidden';
@ -49,18 +67,18 @@ const deletePersonTable = 'DROP TABLE IF EXISTS $personTable';
//End People Table Fields & Schema Queries
// Clusters Table Fields & Schema Queries
const clustersTable = 'clusters';
const clusterPersonTable = 'cluster_person';
const personIdColumn = 'person_id';
const cluserIDColumn = 'cluster_id';
const createClusterTable = '''
CREATE TABLE IF NOT EXISTS $clustersTable (
const createClusterPersonTable = '''
CREATE TABLE IF NOT EXISTS $clusterPersonTable (
$personIdColumn TEXT NOT NULL,
$cluserIDColumn INTEGER NOT NULL,
PRIMARY KEY($personIdColumn, $cluserIDColumn)
);
''';
const dropClustersTable = 'DROP TABLE IF EXISTS $clustersTable';
const dropClusterPersonTable = 'DROP TABLE IF EXISTS $clusterPersonTable';
// End Clusters Table Fields & Schema Queries
/// Cluster Summary Table Fields & Schema Queries

View file

@ -173,7 +173,7 @@ class _FaceDebugSectionWidgetState extends State<FaceDebugSectionWidget> {
trailingIcon: Icons.chevron_right_outlined,
trailingIconIsMuted: true,
onTap: () async {
await FaceMLDataDB.instance.dropPersonTable();
await FaceMLDataDB.instance.dropFeedbackTables();
Bus.instance.fire(PeopleChangedEvent());
showShortToast(context, "Done");
},