mirror of
				https://github.com/optim-enterprises-bv/databunker.git
				synced 2025-10-30 17:37:50 +00:00 
			
		
		
		
	optimize code to use a dynamic array of strings instead of map
This commit is contained in:
		| @@ -245,35 +245,21 @@ func (dbobj MySQLDB) decodeFieldsValues(data interface{}) (string, []interface{} | |||||||
| 	return fields, values | 	return fields, values | ||||||
| } | } | ||||||
|  |  | ||||||
| func (dbobj MySQLDB) decodeForCleanup(data interface{}) string { | func (dbobj MySQLDB) decodeForCleanup(bdel []string) string { | ||||||
| 	fields := "" | 	fields := "" | ||||||
|  |         if bdel != nil { | ||||||
| 	switch t := data.(type) { |                 for _, colname := range bdel { | ||||||
| 	case primitive.M: |                         if len(fields) == 0 { | ||||||
| 		for idx := range data.(primitive.M) { |                                 fields = dbobj.escapeName(colname) + "=null" | ||||||
| 			if len(fields) == 0 { |                         } else { | ||||||
| 				fields = dbobj.escapeName(idx) + "=null" |                                 fields = fields + "," + dbobj.escapeName(colname) + "=null" | ||||||
| 			} else { |                         } | ||||||
| 				fields = fields + "," + dbobj.escapeName(idx) + "=null" |                 } | ||||||
| 			} |         } | ||||||
| 		} |  | ||||||
| 		return fields |  | ||||||
| 	case map[string]interface{}: |  | ||||||
| 		for idx := range data.(map[string]interface{}) { |  | ||||||
| 			if len(fields) == 0 { |  | ||||||
| 				fields = dbobj.escapeName(idx) + "=null" |  | ||||||
| 			} else { |  | ||||||
| 				fields = fields + "," + dbobj.escapeName(idx) + "=null" |  | ||||||
| 			} |  | ||||||
| 		} |  | ||||||
| 	default: |  | ||||||
| 		fmt.Printf("decodeForCleanup: wrong type: %s\n", t) |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	return fields | 	return fields | ||||||
| } | } | ||||||
|  |  | ||||||
| func (dbobj MySQLDB) decodeForUpdate(bdoc *bson.M, bdel *bson.M) (string, []interface{}) { | func (dbobj MySQLDB) decodeForUpdate(bdoc *bson.M, bdel []string) (string, []interface{}) { | ||||||
| 	values := make([]interface{}, 0) | 	values := make([]interface{}, 0) | ||||||
| 	fields := "" | 	fields := "" | ||||||
|  |  | ||||||
| @@ -295,15 +281,15 @@ func (dbobj MySQLDB) decodeForUpdate(bdoc *bson.M, bdel *bson.M) (string, []inte | |||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	if bdel != nil { |         if bdel != nil { | ||||||
| 		for idx := range *bdel { |                 for _, colname := range bdel { | ||||||
| 			if len(fields) == 0 { |                         if len(fields) == 0 { | ||||||
| 				fields = dbobj.escapeName(idx) + "=null" |                                 fields = dbobj.escapeName(colname) + "=null" | ||||||
| 			} else { |                         } else { | ||||||
| 				fields = fields + "," + dbobj.escapeName(idx) + "=null" |                                 fields = fields + "," + dbobj.escapeName(colname) + "=null" | ||||||
| 			} |                         } | ||||||
| 		} |                 } | ||||||
| 	} |         } | ||||||
| 	return fields, values | 	return fields, values | ||||||
| } | } | ||||||
|  |  | ||||||
| @@ -408,7 +394,7 @@ func (dbobj MySQLDB) UpdateRecordInTable(table string, keyName string, keyValue | |||||||
|  |  | ||||||
| // UpdateRecord2 updates database record | // UpdateRecord2 updates database record | ||||||
| func (dbobj MySQLDB) UpdateRecord2(t Tbl, keyName string, keyValue string, | func (dbobj MySQLDB) UpdateRecord2(t Tbl, keyName string, keyValue string, | ||||||
| 	keyName2 string, keyValue2 string, bdoc *bson.M, bdel *bson.M) (int64, error) { | 	keyName2 string, keyValue2 string, bdoc *bson.M, bdel []string) (int64, error) { | ||||||
| 	table := GetTable(t) | 	table := GetTable(t) | ||||||
| 	filter := dbobj.escapeName(keyName) + "=\"" + keyValue + "\" AND " + | 	filter := dbobj.escapeName(keyName) + "=\"" + keyValue + "\" AND " + | ||||||
| 		dbobj.escapeName(keyName2) + "=\"" + keyValue2 + "\"" | 		dbobj.escapeName(keyName2) + "=\"" + keyValue2 + "\"" | ||||||
| @@ -417,13 +403,13 @@ func (dbobj MySQLDB) UpdateRecord2(t Tbl, keyName string, keyValue string, | |||||||
|  |  | ||||||
| // UpdateRecordInTable2 updates database record | // UpdateRecordInTable2 updates database record | ||||||
| func (dbobj MySQLDB) UpdateRecordInTable2(table string, keyName string, | func (dbobj MySQLDB) UpdateRecordInTable2(table string, keyName string, | ||||||
| 	keyValue string, keyName2 string, keyValue2 string, bdoc *bson.M, bdel *bson.M) (int64, error) { | 	keyValue string, keyName2 string, keyValue2 string, bdoc *bson.M, bdel []string) (int64, error) { | ||||||
| 	filter := dbobj.escapeName(keyName) + "=\"" + keyValue + "\" AND " + | 	filter := dbobj.escapeName(keyName) + "=\"" + keyValue + "\" AND " + | ||||||
| 		dbobj.escapeName(keyName2) + "=\"" + keyValue2 + "\"" | 		dbobj.escapeName(keyName2) + "=\"" + keyValue2 + "\"" | ||||||
| 	return dbobj.updateRecordInTableDo(table, filter, bdoc, bdel) | 	return dbobj.updateRecordInTableDo(table, filter, bdoc, bdel) | ||||||
| } | } | ||||||
|  |  | ||||||
| func (dbobj MySQLDB) updateRecordInTableDo(table string, filter string, bdoc *bson.M, bdel *bson.M) (int64, error) { | func (dbobj MySQLDB) updateRecordInTableDo(table string, filter string, bdoc *bson.M, bdel []string) (int64, error) { | ||||||
| 	op, values := dbobj.decodeForUpdate(bdoc, bdel) | 	op, values := dbobj.decodeForUpdate(bdoc, bdel) | ||||||
| 	q := "update " + table + " SET " + op + " WHERE " + filter | 	q := "update " + table + " SET " + op + " WHERE " + filter | ||||||
| 	//fmt.Printf("q: %s\n", q) | 	//fmt.Printf("q: %s\n", q) | ||||||
| @@ -708,9 +694,9 @@ func (dbobj MySQLDB) DeleteExpired(t Tbl, keyName string, keyValue string) (int6 | |||||||
| } | } | ||||||
|  |  | ||||||
| // CleanupRecord nullifies specific feilds in records in database | // CleanupRecord nullifies specific feilds in records in database | ||||||
| func (dbobj MySQLDB) CleanupRecord(t Tbl, keyName string, keyValue string, data interface{}) (int64, error) { | func (dbobj MySQLDB) CleanupRecord(t Tbl, keyName string, keyValue string, bdel []string) (int64, error) { | ||||||
| 	tbl := GetTable(t) | 	tbl := GetTable(t) | ||||||
| 	cleanup := dbobj.decodeForCleanup(data) | 	cleanup := dbobj.decodeForCleanup(bdel) | ||||||
| 	q := "update " + tbl + " SET " + cleanup + " WHERE " + dbobj.escapeName(keyName) + "=?" | 	q := "update " + tbl + " SET " + cleanup + " WHERE " + dbobj.escapeName(keyName) + "=?" | ||||||
| 	fmt.Printf("q: %s\n", q) | 	fmt.Printf("q: %s\n", q) | ||||||
|  |  | ||||||
|   | |||||||
| @@ -243,35 +243,21 @@ func (dbobj PGSQLDB) decodeFieldsValues(data interface{}) (string, []interface{} | |||||||
| 	return fields, values | 	return fields, values | ||||||
| } | } | ||||||
|  |  | ||||||
| func (dbobj PGSQLDB) decodeForCleanup(data interface{}) string { | func (dbobj PGSQLDB) decodeForCleanup(bdel []string) string { | ||||||
| 	fields := "" |         fields := "" | ||||||
|  |         if bdel != nil { | ||||||
| 	switch t := data.(type) { |                 for _, colname := range bdel { | ||||||
| 	case primitive.M: |                         if len(fields) == 0 { | ||||||
| 		for idx := range data.(primitive.M) { |                                 fields = dbobj.escapeName(colname) + "=null" | ||||||
| 			if len(fields) == 0 { |                         } else { | ||||||
| 				fields = dbobj.escapeName(idx) + "=null" |                                 fields = fields + "," + dbobj.escapeName(colname) + "=null" | ||||||
| 			} else { |                         } | ||||||
| 				fields = fields + "," + dbobj.escapeName(idx) + "=null" |                 } | ||||||
| 			} |         } | ||||||
| 		} |         return fields | ||||||
| 		return fields |  | ||||||
| 	case map[string]interface{}: |  | ||||||
| 		for idx := range data.(map[string]interface{}) { |  | ||||||
| 			if len(fields) == 0 { |  | ||||||
| 				fields = dbobj.escapeName(idx) + "=null" |  | ||||||
| 			} else { |  | ||||||
| 				fields = fields + "," + dbobj.escapeName(idx) + "=null" |  | ||||||
| 			} |  | ||||||
| 		} |  | ||||||
| 	default: |  | ||||||
| 		fmt.Printf("decodeForCleanup: wrong type: %s\n", t) |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	return fields |  | ||||||
| } | } | ||||||
|  |  | ||||||
| func (dbobj PGSQLDB) decodeForUpdate(bdoc *bson.M, bdel *bson.M) (string, []interface{}) { | func (dbobj PGSQLDB) decodeForUpdate(bdoc *bson.M, bdel []string) (string, []interface{}) { | ||||||
| 	values := make([]interface{}, 0) | 	values := make([]interface{}, 0) | ||||||
| 	fields := "" | 	fields := "" | ||||||
|  |  | ||||||
| @@ -294,11 +280,11 @@ func (dbobj PGSQLDB) decodeForUpdate(bdoc *bson.M, bdel *bson.M) (string, []inte | |||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	if bdel != nil { | 	if bdel != nil { | ||||||
| 		for idx := range *bdel { | 		for _, colname := range bdel { | ||||||
| 			if len(fields) == 0 { | 			if len(fields) == 0 { | ||||||
| 				fields = dbobj.escapeName(idx) + "=null" | 				fields = dbobj.escapeName(colname) + "=null" | ||||||
| 			} else { | 			} else { | ||||||
| 				fields = fields + "," + dbobj.escapeName(idx) + "=null" | 				fields = fields + "," + dbobj.escapeName(colname) + "=null" | ||||||
| 			} | 			} | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
| @@ -406,7 +392,7 @@ func (dbobj PGSQLDB) UpdateRecordInTable(table string, keyName string, keyValue | |||||||
|  |  | ||||||
| // UpdateRecord2 updates database record | // UpdateRecord2 updates database record | ||||||
| func (dbobj PGSQLDB) UpdateRecord2(t Tbl, keyName string, keyValue string, | func (dbobj PGSQLDB) UpdateRecord2(t Tbl, keyName string, keyValue string, | ||||||
| 	keyName2 string, keyValue2 string, bdoc *bson.M, bdel *bson.M) (int64, error) { | 	keyName2 string, keyValue2 string, bdoc *bson.M, bdel []string) (int64, error) { | ||||||
| 	table := GetTable(t) | 	table := GetTable(t) | ||||||
| 	filter := dbobj.escapeName(keyName) + "='" + keyValue + "' AND " + | 	filter := dbobj.escapeName(keyName) + "='" + keyValue + "' AND " + | ||||||
| 		dbobj.escapeName(keyName2) + "='" + keyValue2 + "'" | 		dbobj.escapeName(keyName2) + "='" + keyValue2 + "'" | ||||||
| @@ -415,13 +401,13 @@ func (dbobj PGSQLDB) UpdateRecord2(t Tbl, keyName string, keyValue string, | |||||||
|  |  | ||||||
| // UpdateRecordInTable2 updates database record | // UpdateRecordInTable2 updates database record | ||||||
| func (dbobj PGSQLDB) UpdateRecordInTable2(table string, keyName string, | func (dbobj PGSQLDB) UpdateRecordInTable2(table string, keyName string, | ||||||
| 	keyValue string, keyName2 string, keyValue2 string, bdoc *bson.M, bdel *bson.M) (int64, error) { | 	keyValue string, keyName2 string, keyValue2 string, bdoc *bson.M, bdel []string) (int64, error) { | ||||||
| 	filter := dbobj.escapeName(keyName) + "='" + keyValue + "' AND " + | 	filter := dbobj.escapeName(keyName) + "='" + keyValue + "' AND " + | ||||||
| 		dbobj.escapeName(keyName2) + "='" + keyValue2 + "'" | 		dbobj.escapeName(keyName2) + "='" + keyValue2 + "'" | ||||||
| 	return dbobj.updateRecordInTableDo(table, filter, bdoc, bdel) | 	return dbobj.updateRecordInTableDo(table, filter, bdoc, bdel) | ||||||
| } | } | ||||||
|  |  | ||||||
| func (dbobj PGSQLDB) updateRecordInTableDo(table string, filter string, bdoc *bson.M, bdel *bson.M) (int64, error) { | func (dbobj PGSQLDB) updateRecordInTableDo(table string, filter string, bdoc *bson.M, bdel []string) (int64, error) { | ||||||
| 	op, values := dbobj.decodeForUpdate(bdoc, bdel) | 	op, values := dbobj.decodeForUpdate(bdoc, bdel) | ||||||
| 	q := "update " + table + " SET " + op + " WHERE " + filter | 	q := "update " + table + " SET " + op + " WHERE " + filter | ||||||
| 	//fmt.Printf("q: %s\n", q) | 	//fmt.Printf("q: %s\n", q) | ||||||
| @@ -706,9 +692,9 @@ func (dbobj PGSQLDB) DeleteExpired(t Tbl, keyName string, keyValue string) (int6 | |||||||
| } | } | ||||||
|  |  | ||||||
| // CleanupRecord nullifies specific feilds in records in database | // CleanupRecord nullifies specific feilds in records in database | ||||||
| func (dbobj PGSQLDB) CleanupRecord(t Tbl, keyName string, keyValue string, data interface{}) (int64, error) { | func (dbobj PGSQLDB) CleanupRecord(t Tbl, keyName string, keyValue string, bdel []string) (int64, error) { | ||||||
| 	tbl := GetTable(t) | 	tbl := GetTable(t) | ||||||
| 	cleanup := dbobj.decodeForCleanup(data) | 	cleanup := dbobj.decodeForCleanup(bdel) | ||||||
| 	q := "update " + tbl + " SET " + cleanup + " WHERE " + dbobj.escapeName(keyName) + "=$1" | 	q := "update " + tbl + " SET " + cleanup + " WHERE " + dbobj.escapeName(keyName) + "=$1" | ||||||
| 	fmt.Printf("q: %s\n", q) | 	fmt.Printf("q: %s\n", q) | ||||||
|  |  | ||||||
|   | |||||||
| @@ -233,35 +233,21 @@ func (dbobj SQLiteDB) decodeFieldsValues(data interface{}) (string, []interface{ | |||||||
| 	return fields, values | 	return fields, values | ||||||
| } | } | ||||||
|  |  | ||||||
| func (dbobj SQLiteDB) decodeForCleanup(data interface{}) string { | func (dbobj SQLiteDB) decodeForCleanup(bdel []string) string { | ||||||
| 	fields := "" |         fields := "" | ||||||
|  |         if bdel != nil { | ||||||
| 	switch t := data.(type) { |                 for _, colname := range bdel { | ||||||
| 	case primitive.M: |                         if len(fields) == 0 { | ||||||
| 		for idx := range data.(primitive.M) { |                                 fields = dbobj.escapeName(colname) + "=null" | ||||||
| 			if len(fields) == 0 { |                         } else { | ||||||
| 				fields = dbobj.escapeName(idx) + "=null" |                                 fields = fields + "," + dbobj.escapeName(colname) + "=null" | ||||||
| 			} else { |                         } | ||||||
| 				fields = fields + "," + dbobj.escapeName(idx) + "=null" |                 } | ||||||
| 			} |         } | ||||||
| 		} |         return fields | ||||||
| 		return fields |  | ||||||
| 	case map[string]interface{}: |  | ||||||
| 		for idx := range data.(map[string]interface{}) { |  | ||||||
| 			if len(fields) == 0 { |  | ||||||
| 				fields = dbobj.escapeName(idx) + "=null" |  | ||||||
| 			} else { |  | ||||||
| 				fields = fields + "," + dbobj.escapeName(idx) + "=null" |  | ||||||
| 			} |  | ||||||
| 		} |  | ||||||
| 	default: |  | ||||||
| 		log.Printf("decodeForCleanup: wrong type: %s\n", t) |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	return fields |  | ||||||
| } | } | ||||||
|  |  | ||||||
| func (dbobj SQLiteDB) decodeForUpdate(bdoc *bson.M, bdel *bson.M) (string, []interface{}) { | func (dbobj SQLiteDB) decodeForUpdate(bdoc *bson.M, bdel []string) (string, []interface{}) { | ||||||
| 	values := make([]interface{}, 0) | 	values := make([]interface{}, 0) | ||||||
| 	fields := "" | 	fields := "" | ||||||
|  |  | ||||||
| @@ -283,15 +269,15 @@ func (dbobj SQLiteDB) decodeForUpdate(bdoc *bson.M, bdel *bson.M) (string, []int | |||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	if bdel != nil { |         if bdel != nil { | ||||||
| 		for idx := range *bdel { |                 for _, colname := range bdel { | ||||||
| 			if len(fields) == 0 { |                         if len(fields) == 0 { | ||||||
| 				fields = dbobj.escapeName(idx) + "=null" |                                 fields = dbobj.escapeName(colname) + "=null" | ||||||
| 			} else { |                         } else { | ||||||
| 				fields = fields + "," + dbobj.escapeName(idx) + "=null" |                                 fields = fields + "," + dbobj.escapeName(colname) + "=null" | ||||||
| 			} |                         } | ||||||
| 		} |                 } | ||||||
| 	} |         } | ||||||
| 	return fields, values | 	return fields, values | ||||||
| } | } | ||||||
|  |  | ||||||
| @@ -397,7 +383,7 @@ func (dbobj SQLiteDB) UpdateRecordInTable(table string, keyName string, keyValue | |||||||
|  |  | ||||||
| // UpdateRecord2 updates database record | // UpdateRecord2 updates database record | ||||||
| func (dbobj SQLiteDB) UpdateRecord2(t Tbl, keyName string, keyValue string, | func (dbobj SQLiteDB) UpdateRecord2(t Tbl, keyName string, keyValue string, | ||||||
| 	keyName2 string, keyValue2 string, bdoc *bson.M, bdel *bson.M) (int64, error) { | 	keyName2 string, keyValue2 string, bdoc *bson.M, bdel []string) (int64, error) { | ||||||
| 	table := GetTable(t) | 	table := GetTable(t) | ||||||
| 	filter := dbobj.escapeName(keyName) + "=\"" + keyValue + "\" AND " + | 	filter := dbobj.escapeName(keyName) + "=\"" + keyValue + "\" AND " + | ||||||
| 		dbobj.escapeName(keyName2) + "=\"" + keyValue2 + "\"" | 		dbobj.escapeName(keyName2) + "=\"" + keyValue2 + "\"" | ||||||
| @@ -406,13 +392,13 @@ func (dbobj SQLiteDB) UpdateRecord2(t Tbl, keyName string, keyValue string, | |||||||
|  |  | ||||||
| // UpdateRecordInTable2 updates database record | // UpdateRecordInTable2 updates database record | ||||||
| func (dbobj SQLiteDB) UpdateRecordInTable2(table string, keyName string, | func (dbobj SQLiteDB) UpdateRecordInTable2(table string, keyName string, | ||||||
| 	keyValue string, keyName2 string, keyValue2 string, bdoc *bson.M, bdel *bson.M) (int64, error) { | 	keyValue string, keyName2 string, keyValue2 string, bdoc *bson.M, bdel []string) (int64, error) { | ||||||
| 	filter := dbobj.escapeName(keyName) + "=\"" + keyValue + "\" AND " + | 	filter := dbobj.escapeName(keyName) + "=\"" + keyValue + "\" AND " + | ||||||
| 		dbobj.escapeName(keyName2) + "=\"" + keyValue2 + "\"" | 		dbobj.escapeName(keyName2) + "=\"" + keyValue2 + "\"" | ||||||
| 	return dbobj.updateRecordInTableDo(table, filter, bdoc, bdel) | 	return dbobj.updateRecordInTableDo(table, filter, bdoc, bdel) | ||||||
| } | } | ||||||
|  |  | ||||||
| func (dbobj SQLiteDB) updateRecordInTableDo(table string, filter string, bdoc *bson.M, bdel *bson.M) (int64, error) { | func (dbobj SQLiteDB) updateRecordInTableDo(table string, filter string, bdoc *bson.M, bdel []string) (int64, error) { | ||||||
| 	op, values := dbobj.decodeForUpdate(bdoc, bdel) | 	op, values := dbobj.decodeForUpdate(bdoc, bdel) | ||||||
| 	q := "update " + table + " SET " + op + " WHERE " + filter | 	q := "update " + table + " SET " + op + " WHERE " + filter | ||||||
| 	//fmt.Printf("q: %s\n", q) | 	//fmt.Printf("q: %s\n", q) | ||||||
| @@ -690,11 +676,11 @@ func (dbobj SQLiteDB) DeleteExpired(t Tbl, keyName string, keyValue string) (int | |||||||
| } | } | ||||||
|  |  | ||||||
| // CleanupRecord nullifies specific feilds in records in database | // CleanupRecord nullifies specific feilds in records in database | ||||||
| func (dbobj SQLiteDB) CleanupRecord(t Tbl, keyName string, keyValue string, data interface{}) (int64, error) { | func (dbobj SQLiteDB) CleanupRecord(t Tbl, keyName string, keyValue string, bdel []string) (int64, error) { | ||||||
| 	tbl := GetTable(t) | 	tbl := GetTable(t) | ||||||
| 	cleanup := dbobj.decodeForCleanup(data) | 	cleanup := dbobj.decodeForCleanup(bdel) | ||||||
| 	q := "update " + tbl + " SET " + cleanup + " WHERE " + dbobj.escapeName(keyName) + "=$1" | 	q := "update " + tbl + " SET " + cleanup + " WHERE " + dbobj.escapeName(keyName) + "=$1" | ||||||
| 	log.Printf("q: %s\n", q) | 	log.Printf("CleanupRecord q: %s\n", q) | ||||||
|  |  | ||||||
| 	tx, err := dbobj.db.Begin() | 	tx, err := dbobj.db.Begin() | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
|   | |||||||
| @@ -83,8 +83,8 @@ type BackendDB interface { | |||||||
| 	CountRecords(Tbl, string, string) (int64, error) | 	CountRecords(Tbl, string, string) (int64, error) | ||||||
| 	UpdateRecord(Tbl, string, string, *bson.M) (int64, error) | 	UpdateRecord(Tbl, string, string, *bson.M) (int64, error) | ||||||
| 	UpdateRecordInTable(string, string, string, *bson.M) (int64, error) | 	UpdateRecordInTable(string, string, string, *bson.M) (int64, error) | ||||||
| 	UpdateRecord2(Tbl, string, string, string, string, *bson.M, *bson.M) (int64, error) | 	UpdateRecord2(Tbl, string, string, string, string, *bson.M, []string) (int64, error) | ||||||
| 	UpdateRecordInTable2(string, string, string, string, string, *bson.M, *bson.M) (int64, error) | 	UpdateRecordInTable2(string, string, string, string, string, *bson.M, []string) (int64, error) | ||||||
| 	LookupRecord(Tbl, bson.M) (bson.M, error) | 	LookupRecord(Tbl, bson.M) (bson.M, error) | ||||||
| 	GetRecord(Tbl, string, string) (bson.M, error) | 	GetRecord(Tbl, string, string) (bson.M, error) | ||||||
| 	GetRecordFromTable(string, string, string) (bson.M, error) | 	GetRecordFromTable(string, string, string) (bson.M, error) | ||||||
| @@ -94,7 +94,7 @@ type BackendDB interface { | |||||||
| 	DeleteRecord2(Tbl, string, string, string, string) (int64, error) | 	DeleteRecord2(Tbl, string, string, string, string) (int64, error) | ||||||
| 	DeleteExpired0(Tbl, int32) (int64, error) | 	DeleteExpired0(Tbl, int32) (int64, error) | ||||||
| 	DeleteExpired(Tbl, string, string) (int64, error) | 	DeleteExpired(Tbl, string, string) (int64, error) | ||||||
| 	CleanupRecord(Tbl, string, string, interface{}) (int64, error) | 	CleanupRecord(Tbl, string, string, []string) (int64, error) | ||||||
| 	GetExpiring(Tbl, string, string) ([]bson.M, error) | 	GetExpiring(Tbl, string, string) ([]bson.M, error) | ||||||
| 	GetUniqueList(Tbl, string) ([]bson.M, error) | 	GetUniqueList(Tbl, string) ([]bson.M, error) | ||||||
| 	GetList0(Tbl, int32, int32, string) ([]bson.M, error) | 	GetList0(Tbl, int32, int32, string) ([]bson.M, error) | ||||||
|   | |||||||
| @@ -209,7 +209,7 @@ func (dbobj dbcon) updateUserRecordDo(jsonDataPatch []byte, userTOKEN string, ol | |||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		return nil, nil, false, err | 		return nil, nil, false, err | ||||||
| 	} | 	} | ||||||
| 	bdel := bson.M{} | 	var bdel []string | ||||||
| 	sig := oldUserBson["md5"].(string) | 	sig := oldUserBson["md5"].(string) | ||||||
| 	// create new user record | 	// create new user record | ||||||
| 	bdoc := bson.M{} | 	bdoc := bson.M{} | ||||||
| @@ -256,7 +256,7 @@ func (dbobj dbcon) updateUserRecordDo(jsonDataPatch []byte, userTOKEN string, ol | |||||||
| 			//fmt.Printf("adding index3? %s\n", raw[idx]) | 			//fmt.Printf("adding index3? %s\n", raw[idx]) | ||||||
| 			bdoc[idx+"idx"] = hashString(dbobj.hash, newIdxFinalValue) | 			bdoc[idx+"idx"] = hashString(dbobj.hash, newIdxFinalValue) | ||||||
| 		} else if len(newIdxFinalValue) == 0 { | 		} else if len(newIdxFinalValue) == 0 { | ||||||
| 			bdel[idx+"idx"] = "" | 			bdel = append(bdel, idx+"idx") | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| @@ -274,7 +274,7 @@ func (dbobj dbcon) updateUserRecordDo(jsonDataPatch []byte, userTOKEN string, ol | |||||||
| 	//filter2 := bson.D{{"token", userTOKEN}, {"md5", sig}} | 	//filter2 := bson.D{{"token", userTOKEN}, {"md5", sig}} | ||||||
|  |  | ||||||
| 	//fmt.Printf("op json: %s\n", update) | 	//fmt.Printf("op json: %s\n", update) | ||||||
| 	result, err := dbobj.store.UpdateRecord2(storage.TblName.Users, "token", userTOKEN, "md5", sig, &bdoc, &bdel) | 	result, err := dbobj.store.UpdateRecord2(storage.TblName.Users, "token", userTOKEN, "md5", sig, &bdoc, bdel) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		return nil, nil, false, err | 		return nil, nil, false, err | ||||||
| 	} | 	} | ||||||
| @@ -517,7 +517,7 @@ func (dbobj dbcon) deleteUserRecord(userJSON []byte, userTOKEN string, conf Conf | |||||||
| 	dbobj.store.DeleteRecord(storage.TblName.Sessions, "token", userTOKEN) | 	dbobj.store.DeleteRecord(storage.TblName.Sessions, "token", userTOKEN) | ||||||
|  |  | ||||||
| 	dataJSON, record := cleanupRecord(userJSON) | 	dataJSON, record := cleanupRecord(userJSON) | ||||||
| 	bdel := bson.M{} | 	var bdel []string | ||||||
| 	if dataJSON != nil { | 	if dataJSON != nil { | ||||||
| 		oldUserBson, err := dbobj.lookupUserRecord(userTOKEN) | 		oldUserBson, err := dbobj.lookupUserRecord(userTOKEN) | ||||||
| 		if err != nil { | 		if err != nil { | ||||||
| @@ -535,19 +535,19 @@ func (dbobj dbcon) deleteUserRecord(userJSON []byte, userTOKEN string, conf Conf | |||||||
| 			fmt.Printf("Preservice email idx\n") | 			fmt.Printf("Preservice email idx\n") | ||||||
| 			bdoc["emailidx"] = oldUserBson["emailidx"].(string) | 			bdoc["emailidx"] = oldUserBson["emailidx"].(string) | ||||||
| 		} else { | 		} else { | ||||||
| 			bdel["emailidx"] = "" | 			bdel = append(bdel, "emailidx") | ||||||
| 		} | 		} | ||||||
| 		if _, ok := record["phone"]; ok { | 		if _, ok := record["phone"]; ok { | ||||||
| 			fmt.Printf("Preservice phone idx\n") | 			fmt.Printf("Preservice phone idx\n") | ||||||
| 			bdoc["phoneidx"] = oldUserBson["phoneidx"].(string) | 			bdoc["phoneidx"] = oldUserBson["phoneidx"].(string) | ||||||
| 		} else { | 		} else { | ||||||
| 			bdel["phoneidx"] = "" | 			bdel = append(bdel, "phoneidx") | ||||||
| 		} | 		} | ||||||
| 		if _, ok := record["login"]; ok { | 		if _, ok := record["login"]; ok { | ||||||
| 			fmt.Printf("Preservice login idx\n") | 			fmt.Printf("Preservice login idx\n") | ||||||
| 			bdoc["loginidx"] = oldUserBson["loginidx"].(string) | 			bdoc["loginidx"] = oldUserBson["loginidx"].(string) | ||||||
| 		} else { | 		} else { | ||||||
| 			bdel["loginidx"] = "" | 			bdel = append(bdel, "loginidx") | ||||||
| 		} | 		} | ||||||
| 		encoded, _ := encrypt(dbobj.masterKey, userKeyBinary, dataJSON) | 		encoded, _ := encrypt(dbobj.masterKey, userKeyBinary, dataJSON) | ||||||
| 		encodedStr := base64.StdEncoding.EncodeToString(encoded) | 		encodedStr := base64.StdEncoding.EncodeToString(encoded) | ||||||
| @@ -556,7 +556,7 @@ func (dbobj dbcon) deleteUserRecord(userJSON []byte, userTOKEN string, conf Conf | |||||||
| 		md5Hash := md5.Sum([]byte(encodedStr)) | 		md5Hash := md5.Sum([]byte(encodedStr)) | ||||||
| 		bdoc["md5"] = base64.StdEncoding.EncodeToString(md5Hash[:]) | 		bdoc["md5"] = base64.StdEncoding.EncodeToString(md5Hash[:]) | ||||||
| 		bdoc["token"] = userTOKEN | 		bdoc["token"] = userTOKEN | ||||||
| 		result, err := dbobj.store.UpdateRecord2(storage.TblName.Users, "token", userTOKEN, "md5", sig, &bdoc, &bdel) | 		result, err := dbobj.store.UpdateRecord2(storage.TblName.Users, "token", userTOKEN, "md5", sig, &bdoc, bdel) | ||||||
| 		if err != nil { | 		if err != nil { | ||||||
| 			return false, err | 			return false, err | ||||||
| 		} | 		} | ||||||
| @@ -566,12 +566,7 @@ func (dbobj dbcon) deleteUserRecord(userJSON []byte, userTOKEN string, conf Conf | |||||||
| 		return false, nil | 		return false, nil | ||||||
| 	} | 	} | ||||||
| 	// cleanup user record | 	// cleanup user record | ||||||
| 	bdel["data"] = "" | 	bdel = append(bdel, "data", "key", "loginidx", "emailidx", "phoneidx", "customidx") | ||||||
| 	bdel["key"] = "" |  | ||||||
| 	bdel["loginidx"] = "" |  | ||||||
| 	bdel["emailidx"] = "" |  | ||||||
| 	bdel["phoneidx"] = "" |  | ||||||
| 	bdel["customidx"] = "" |  | ||||||
| 	result, err := dbobj.store.CleanupRecord(storage.TblName.Users, "token", userTOKEN, bdel) | 	result, err := dbobj.store.CleanupRecord(storage.TblName.Users, "token", userTOKEN, bdel) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		return false, err | 		return false, err | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 yuli
					yuli