Issue 71761531 add indexes (#29)

* [ISSUE-71761531] add indexes

* [ISSUE-71761531] make sure adding index not in critical path
diff --git a/data.go b/data.go
index 558c133..f3ffcd1 100644
--- a/data.go
+++ b/data.go
@@ -87,43 +87,15 @@
 }
 
 func (dbc *dbManager) initDb() error {
-	tx, err := dbc.getDb().Begin()
-	if err != nil {
-		return err
-	}
-	defer tx.Rollback()
-	_, err = tx.Exec(`
-	CREATE TABLE IF NOT EXISTS APID_BLOB_AVAILABLE (
-		id text primary key,
-   		local_fs_location text NOT NULL
-	);
-	`)
-	if err != nil {
-		return err
-	}
-	_, err = tx.Exec(`
-	CREATE TABLE IF NOT EXISTS APID_CONFIGURATION_LSN (
-		lsn text primary key
-	);
-	`)
-	if err != nil {
+	if err := initTables(dbc.getDb()); err != nil {
+		log.Errorf("error in initTables(): %v", err)
 		return err
 	}
 
-	// insert a row if APID_CONFIGURATION_LSN is empty
-	_, err = tx.Exec(`
-	INSERT INTO APID_CONFIGURATION_LSN (lsn)
-	SELECT '0.0.0'
-	WHERE NOT EXISTS (SELECT * FROM APID_CONFIGURATION_LSN)
-	`)
-	if err != nil {
-		return err
+	if err := addIndexes(dbc.getDb()); err != nil {
+		// not on critical path, continue in case of error
+		log.Errorf("error in addIndexes(): %v", err)
 	}
-
-	if err = tx.Commit(); err != nil {
-		return err
-	}
-	log.Debug("Database table APID_BLOB_AVAILABLE, APID_CONFIGURATION_LSN created.")
 	return nil
 }
 
@@ -512,3 +484,61 @@
 	}
 	return v.Interface(), nil
 }
+
+func initTables(db apid.DB) error {
+	tx, err := db.Begin()
+	if err != nil {
+		return err
+	}
+	defer tx.Rollback()
+	_, err = tx.Exec(`
+	CREATE TABLE IF NOT EXISTS APID_BLOB_AVAILABLE (
+		id text primary key,
+   		local_fs_location text NOT NULL
+	);
+	`)
+	if err != nil {
+		return err
+	}
+	_, err = tx.Exec(`
+	CREATE TABLE IF NOT EXISTS APID_CONFIGURATION_LSN (
+		lsn text primary key
+	);
+	`)
+	if err != nil {
+		return err
+	}
+
+	// insert a row if APID_CONFIGURATION_LSN is empty
+	_, err = tx.Exec(`
+	INSERT INTO APID_CONFIGURATION_LSN (lsn)
+	SELECT '0.0.0'
+	WHERE NOT EXISTS (SELECT * FROM APID_CONFIGURATION_LSN)
+	`)
+	if err != nil {
+		return err
+	}
+
+	if err = tx.Commit(); err != nil {
+		return err
+	}
+	log.Debug("Database table APID_BLOB_AVAILABLE, APID_CONFIGURATION_LSN created.")
+	return nil
+}
+
+func addIndexes(db apid.DB) error {
+	log.Debug("add index to sqlite")
+	tx, err := db.Begin()
+	if err != nil {
+		return err
+	}
+	defer tx.Rollback()
+	// add indexes
+	_, err = tx.Exec(`
+	CREATE INDEX IF NOT EXISTS config_type on METADATA_RUNTIME_ENTITY_METADATA (type);
+	`)
+	if err != nil {
+		return err
+	}
+	return tx.Commit()
+}