104 lines
3.4 KiB
Dart
104 lines
3.4 KiB
Dart
// Faces Table Fields & Schema Queries
|
|
import 'package:photos/services/machine_learning/face_ml/face_filtering/face_filtering_constants.dart';
|
|
|
|
const facesTable = 'faces';
|
|
const fileIDColumn = 'file_id';
|
|
const faceIDColumn = 'face_id';
|
|
const faceDetectionColumn = 'detection';
|
|
const faceEmbeddingBlob = 'eBlob';
|
|
const faceScore = 'score';
|
|
const faceBlur = 'blur';
|
|
const isSideways = 'is_sideways';
|
|
const imageWidth = 'width';
|
|
const imageHeight = 'height';
|
|
const faceClusterId = 'cluster_id';
|
|
const mlVersionColumn = 'ml_version';
|
|
|
|
const createFacesTable = '''CREATE TABLE IF NOT EXISTS $facesTable (
|
|
$fileIDColumn INTEGER NOT NULL,
|
|
$faceIDColumn TEXT NOT NULL UNIQUE,
|
|
$faceDetectionColumn TEXT NOT NULL,
|
|
$faceEmbeddingBlob BLOB NOT NULL,
|
|
$faceScore REAL NOT NULL,
|
|
$faceBlur REAL NOT NULL DEFAULT $kLapacianDefault,
|
|
$isSideways INTEGER NOT NULL DEFAULT 0,
|
|
$imageHeight INTEGER NOT NULL DEFAULT 0,
|
|
$imageWidth INTEGER NOT NULL DEFAULT 0,
|
|
$mlVersionColumn INTEGER NOT NULL DEFAULT -1,
|
|
PRIMARY KEY($fileIDColumn, $faceIDColumn)
|
|
);
|
|
''';
|
|
|
|
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 (
|
|
$fcFaceId TEXT NOT NULL,
|
|
$fcClusterID INTEGER NOT NULL,
|
|
PRIMARY KEY($fcFaceId)
|
|
);
|
|
''';
|
|
// -- Creating a non-unique index on clusterID for query optimization
|
|
const fcClusterIDIndex =
|
|
'''CREATE INDEX IF NOT EXISTS idx_fcClusterID ON $faceClustersTable($fcClusterID);''';
|
|
const dropFaceClustersTable = 'DROP TABLE IF EXISTS $faceClustersTable';
|
|
//##endregion
|
|
|
|
// People Table Fields & Schema Queries
|
|
const personTable = 'person';
|
|
|
|
const deletePersonTable = 'DROP TABLE IF EXISTS $personTable';
|
|
//End People Table Fields & Schema Queries
|
|
|
|
// Clusters Table Fields & Schema Queries
|
|
const clusterPersonTable = 'cluster_person';
|
|
const personIdColumn = 'person_id';
|
|
const clusterIDColumn = 'cluster_id';
|
|
|
|
const createClusterPersonTable = '''
|
|
CREATE TABLE IF NOT EXISTS $clusterPersonTable (
|
|
$personIdColumn TEXT NOT NULL,
|
|
$clusterIDColumn INTEGER NOT NULL,
|
|
PRIMARY KEY($personIdColumn, $clusterIDColumn)
|
|
);
|
|
''';
|
|
const dropClusterPersonTable = 'DROP TABLE IF EXISTS $clusterPersonTable';
|
|
// End Clusters Table Fields & Schema Queries
|
|
|
|
/// Cluster Summary Table Fields & Schema Queries
|
|
const clusterSummaryTable = 'cluster_summary';
|
|
const avgColumn = 'avg';
|
|
const countColumn = 'count';
|
|
const createClusterSummaryTable = '''
|
|
CREATE TABLE IF NOT EXISTS $clusterSummaryTable (
|
|
$clusterIDColumn INTEGER NOT NULL,
|
|
$avgColumn BLOB NOT NULL,
|
|
$countColumn INTEGER NOT NULL,
|
|
PRIMARY KEY($clusterIDColumn)
|
|
);
|
|
''';
|
|
|
|
const dropClusterSummaryTable = 'DROP TABLE IF EXISTS $clusterSummaryTable';
|
|
|
|
/// End Cluster Summary Table Fields & Schema Queries
|
|
|
|
/// notPersonFeedback Table Fields & Schema Queries
|
|
const notPersonFeedback = 'not_person_feedback';
|
|
|
|
const createNotPersonFeedbackTable = '''
|
|
CREATE TABLE IF NOT EXISTS $notPersonFeedback (
|
|
$personIdColumn TEXT NOT NULL,
|
|
$clusterIDColumn INTEGER NOT NULL,
|
|
PRIMARY KEY($personIdColumn, $clusterIDColumn)
|
|
);
|
|
''';
|
|
const dropNotPersonFeedbackTable = 'DROP TABLE IF EXISTS $notPersonFeedback';
|
|
// End Clusters Table Fields & Schema Queries
|