"""
class GDDBGlobals
"""

class_name GDDBGlobals

tool
extends Node

# a flag that tells if the tool's interface is active or not
var m_is_interface_active : bool = false

# sets the active flag
func set_interface_active(active : bool) -> void :
	m_is_interface_active = active

# returns true if the tool's interface is active
func is_interface_active() -> bool :
	return m_is_interface_active

# returns the name of the data type
func get_data_name(data_type : int) -> String :
	if(data_type == gddb_types.e_prop_type_bool):
		return "Bool"
	elif(data_type == gddb_types.e_prop_type_int):
		return "Integer"
	elif(data_type == gddb_types.e_prop_type_float):
		return "Float"
	elif(data_type == gddb_types.e_prop_type_string):
		return "String"
	elif(data_type == gddb_types.e_prop_type_resource):
		return "Resource"

	print("GDDBGlobals::get_data_name(" + str(data_type) + ")")
	return "Unknown data type"

# returns the name of the data filter
func get_data_filter_name(data_filter_type : int) -> String :
	if(data_filter_type == gddb_types.e_data_filter_equal):
		return "Equal"
	elif(data_filter_type == gddb_types.e_data_filter_not_equal):
		return "Not equal"
	elif(data_filter_type == gddb_types.e_data_filter_less):
		return "Less"
	elif(data_filter_type == gddb_types.e_data_filter_greater):
		return "Greater"
	elif(data_filter_type == gddb_types.e_data_filter_lequal):
		return "Less or equal"
	elif(data_filter_type == gddb_types.e_data_filter_gequal):
		return "Greater or equal"

	print("GDDBGlobals::get_data_filter_name(" + str(data_filter_type) + ")")
	return "Unknown data filter type"

# checks the name of the database
func check_db_name(db_name : String) -> bool :
	for idx in range(0, db_name.length()):
		for jdx in range(0, gddb_constants.c_invalid_characters.length()):
			if(db_name[idx] == gddb_constants.c_invalid_characters[jdx]):
				return false
	return true

# returns a json from a row from a table
func get_json_from_row(table : Object, row_idx : int) -> String :
	var json = "{"
	var row = table.get_data_at_row_idx(row_idx)
	for jdx in range(0, row.size()):
		var prop = table.get_prop_at(jdx)
		json += "\"" + prop.get_prop_name() + "\":"
		json += "\"" + row[jdx].get_data() + "\""
		if(jdx < row.size() - 1):
			json += ", "
	json += "}"
	return json

# returns the digits count from a number
func get_digits_count(number : int) -> int :
	if(number == 0):
		return 1

	var digits_count = 0
	while(number > 0):
		number /= 10
		digits_count += 1

	return digits_count

# replace special characters in a string to handle properly saving into database
func handle_string(text : String) -> String :
	var string = ""
	for idx in range(0, text.length()):
		if(text[idx] == "\n"):
			string += "\\n"
		else:
			string += text[idx]
	return string
