Update roles/home/aichat.nix
This commit is contained in:
		
							parent
							
								
									abb0002c4c
								
							
						
					
					
						commit
						29692c5f29
					
				| @ -214,54 +214,498 @@ roles = '' | ||||
| 
 | ||||
|       ### INPUT: | ||||
| 
 | ||||
|       ``` | ||||
|       diff --git a/src/app.js b/src/app.js | ||||
|       index 83d2e7a..b6a1c3f 100644 | ||||
|       --- a/src/app.js | ||||
|       +++ b/src/app.js | ||||
|       @@ -10,6 +10,10 @@ function initialize() { | ||||
|           setupEventListeners(); | ||||
|       diff --git a/cmd/api/main.go b/cmd/api/main.go | ||||
|       index 8b974c8..9dfd24b 100644 | ||||
|       --- a/cmd/api/main.go | ||||
|       +++ b/cmd/api/main.go | ||||
|       @@ -33,6 +33,8 @@ func loadAppConfig() *AppConfig { | ||||
|       } | ||||
|        | ||||
|       +// TODO: add other listeners | ||||
|       +// https://github.com/user/project/issue/123 | ||||
|       +function setupEventListeners() { | ||||
|       +    document.getElementById('submit').addEventListener('click', handleSubmit); | ||||
|       +    document.getElementById('reset').addEventListener('click', handleReset); | ||||
|       func main() { | ||||
|       +	applyMigrations := false | ||||
|       +	cfg := config.New() | ||||
|         err := config.SetSecret([]string{ | ||||
|           "TEMPORAL_ADDRESS", | ||||
|           "PSQL", | ||||
|       @@ -42,13 +44,23 @@ func main() { | ||||
|           "REDASH_API_KEY", | ||||
|           "INFOBLOX_SECRET", | ||||
|         }) | ||||
|       + | ||||
|         if err != nil { | ||||
|           log.Printf("Could not set secrets: %v", err) | ||||
|        | ||||
|           os.Exit(1) | ||||
|         } | ||||
|        | ||||
|       -	database.InitDB("Core") | ||||
|       +	runMigrations, _ := cfg.Load(config.RunMigration.String()) | ||||
|       +	if runMigrations != "" { | ||||
|       +		applyMigrations = true | ||||
|       +	} | ||||
|       + | ||||
|       function handleSubmit(event) { | ||||
|           event.preventDefault(); | ||||
|           const data = new FormData(event.target); | ||||
|       @@ -20,6 +24,10 @@ function handleSubmit(event) { | ||||
|       +	err = database.InitDB("Core", applyMigrations) | ||||
|       + | ||||
|       +	if err != nil { | ||||
|       +		log.Fatalf("Cannot initialize DB: %v", err) | ||||
|       +	} | ||||
|        | ||||
|           console.log('Form submitted:', data); | ||||
|         appConfig := loadAppConfig() | ||||
|        | ||||
|       diff --git a/cmd/fixtures/fixtures.go b/cmd/fixtures/fixtures.go | ||||
|       index 3d23a6d..ff3290e 100644 | ||||
|       --- a/cmd/fixtures/fixtures.go | ||||
|       +++ b/cmd/fixtures/fixtures.go | ||||
|       @@ -10,13 +10,27 @@ import ( | ||||
|        | ||||
|         "github.com/go-faker/faker/v4" | ||||
|         "github.com/lib/pq" | ||||
|       +	"github.pie.apple.com/kerosene/Core/pkg/config" | ||||
|         "github.pie.apple.com/kerosene/Core/pkg/database" | ||||
|         "github.pie.apple.com/kerosene/Core/structs" | ||||
|       ) | ||||
|        | ||||
|       // Initializing worker, database, producer and redis when the program starts. | ||||
|       func init() { | ||||
|       -	database.InitDB("DatabaseManager", "W") | ||||
|       +	applyMigrations := false | ||||
|       +	cfg := config.New() | ||||
|       + | ||||
|       +	runMigrations, _ := cfg.Load(config.RunMigration.String()) | ||||
|       +	if runMigrations != "" { | ||||
|       +		applyMigrations = true | ||||
|       +	} | ||||
|       + | ||||
|       +	err := database.InitDB("DatabaseManager", applyMigrations, "W") | ||||
|       + | ||||
|       +	if err != nil { | ||||
|       +		log.Fatalf("Cannot initialize DB: %s", err) | ||||
|       +	} | ||||
|       + | ||||
|         rand.Seed(time.Now().UnixNano()) | ||||
|       } | ||||
|        | ||||
|       +function handleReset(event) { | ||||
|       +    event.preventDefault(); | ||||
|       +    event.target.form.reset(); | ||||
|       +    console.log('Form reset'); | ||||
|       diff --git a/cmd/migrator/migrator.go b/cmd/migrator/migrator.go | ||||
|       index 3b9961a..278cc2b 100755 | ||||
|       --- a/cmd/migrator/migrator.go | ||||
|       +++ b/cmd/migrator/migrator.go | ||||
|       @@ -17,13 +17,12 @@ func main() { | ||||
|         automigrate := flag.Bool("auto", false, "Run auto-migration") | ||||
|         apply := flag.String("apply", "", "Apply a specific migration file") | ||||
|         deleteFlag := flag.Bool("delete", false, "Delete existing tables before migration") | ||||
|       -	configDir := flag.String("configDir", "", "Optional directory for configuration files") | ||||
|        | ||||
|         flag.Parse() | ||||
|        | ||||
|         utils.LogStep("Connecting to the database...") | ||||
|        | ||||
|       -	err := database.InitDB("Migrator") | ||||
|       +	err := database.InitDB("Migrator", *automigrate) | ||||
|         if err != nil { | ||||
|           utils.LogFatal("Could not initialise DB: ", err) | ||||
|         } | ||||
|       ``` | ||||
|       @@ -40,16 +39,13 @@ func main() { | ||||
|         } | ||||
|        | ||||
|         switch { | ||||
|       -	case *automigrate: | ||||
|       -		if err := database.DBAutoMigration(database.Client, *configDir); err != nil { | ||||
|       -			utils.LogFatal("Failed to run auto-migration", err) | ||||
|       -		} | ||||
|       - | ||||
|         case *apply != "": | ||||
|           if err := database.ApplyMigration(database.Client, *apply); err != nil { | ||||
|             utils.LogFatal("Failed to apply migration", err) | ||||
|           } | ||||
|       - | ||||
|       +	case *automigrate: | ||||
|       +		// Just log a message as the migrations are handled by InitDB | ||||
|       +		utils.LogInfo("Initialized DB with auto-migrations") | ||||
|         default: | ||||
|           flag.Usage() | ||||
|           os.Exit(1) | ||||
|       diff --git a/pkg/advans/connect.go b/pkg/advans/connect.go | ||||
|       index cbcfdb3..f65c59c 100644 | ||||
|       --- a/pkg/advans/connect.go | ||||
|       +++ b/pkg/advans/connect.go | ||||
|       @@ -4,6 +4,7 @@ import ( | ||||
|         "bytes" | ||||
|         "encoding/json" | ||||
|         "fmt" | ||||
|       +	"log" | ||||
|         "net/http" | ||||
|        | ||||
|         "github.pie.apple.com/kerosene/Core/pkg/config" | ||||
|       @@ -28,7 +29,21 @@ type Payload struct { | ||||
|       var cfg = config.New() | ||||
|        | ||||
|       func init() { | ||||
|       -	database.InitDB("IngestionPipeline", "W") | ||||
|       +	applyMigrations := false | ||||
|       + | ||||
|       +	runMigrations, _ := cfg.Load(config.RunMigration.String()) | ||||
|       +	if runMigrations != "" { | ||||
|       +		applyMigrations = true | ||||
|       +	} | ||||
|       + | ||||
|       +	err := database.InitDB("IngestionPipeline", applyMigrations, "W") | ||||
|       + | ||||
|       +	if err != nil { | ||||
|       +		log.Fatalf("Cannot initialize DB: %s", err) | ||||
|       +	} | ||||
|       + | ||||
|       +	// TODO check errors! | ||||
|       +	// https://github.pie.apple.com/Kerosene/Core/issues/51 | ||||
|         config.SetSecret([]string{"ADVANS_MTLS_PRIVATE_KEY", "ADVANS_MTLS_CERT", "ADVANS_API_END_POINT"}) | ||||
|       } | ||||
|        | ||||
|       @@ -42,6 +57,7 @@ func initMTLSClient(certFilePath, keyFilePath string) (*http.Client, error) { | ||||
|        | ||||
|       func sendPayload(client *http.Client, advansEndpoint string, path string, payload Payload) error { | ||||
|         payloadBytes, err := json.Marshal(payload) | ||||
|       + | ||||
|         if err != nil { | ||||
|           return fmt.Errorf("error marshalling payload: %s", err) | ||||
|         } | ||||
|       @@ -63,88 +79,3 @@ func sendPayload(client *http.Client, advansEndpoint string, path string, payloa | ||||
|        | ||||
|         return nil | ||||
|       } | ||||
| 
 | ||||
|       diff --git a/pkg/config/main.go b/pkg/config/main.go | ||||
|       index ec14c10..e80c2c2 100644 | ||||
|       --- a/pkg/config/main.go | ||||
|       +++ b/pkg/config/main.go | ||||
|       @@ -16,6 +16,7 @@ import ( | ||||
|       var ( | ||||
|         errSecretNotFound         = errors.New("secret not found") | ||||
|         errSecretDuplicateSource  = errors.New("tried to retrieve secret from multiple sources") | ||||
|       +	errDataConfigDirNotExists = errors.New("data config directory does not exist") | ||||
|         errSecretNotSet           = errors.New("secret not set in any provider or as an environment variable") | ||||
|         errUnknownProvider        = errors.New("unknown provider when retrieving secret") | ||||
|         errWhisperAuthDirNotSet   = errors.New("whisper authentication file directory not specified") | ||||
|       @@ -28,8 +29,12 @@ var ( | ||||
|         errWhisperRetrieveContent = errors.New("could not retrieve whisper secret's content") | ||||
|       ) | ||||
|        | ||||
|       -type configProvider string | ||||
|       -type configKey string | ||||
|       +const defaultDataConfigDir = "Config/" | ||||
|       + | ||||
|       +type ( | ||||
|       +	configProvider string | ||||
|       +	configKey      string | ||||
|       +) | ||||
|        | ||||
|       func (cg configKey) String() string { | ||||
|         return string(cg) | ||||
|       @@ -40,17 +45,18 @@ func (cp configProvider) String() string { | ||||
|       } | ||||
|        | ||||
|       const ( | ||||
|       -	whisperProvider     configProvider = "WHISPER" | ||||
|       -	PSQL                configKey      = "PSQL" | ||||
|       -	PSQLRead            configKey      = "PSQL_READ" | ||||
|       -	TemporalAddress     configKey      = "TEMPORAL_ADDRESS" | ||||
|       -	KafkaBrokers        configKey      = "KAFKA_BROKERS" | ||||
|       -	RedisURI            configKey      = "REDIS" | ||||
|       -	KeroseneEnvironment configKey      = "ENVIRONMENT" | ||||
|       -	ElasticSearchURI    configKey      = "ELASTICSEARCH_URL" | ||||
|       -	Proxy               configKey      = "PROXY" | ||||
|       -	Queue               configKey      = "QUEUE" | ||||
|       -	RunMigration        configKey      = "RUN_AUTOMIGRATION" | ||||
|       +	whisperProvider      configProvider = "WHISPER" | ||||
|       +	PSQL                 configKey      = "PSQL" | ||||
|       +	PSQLRead             configKey      = "PSQL_READ" | ||||
|       +	TemporalAddress      configKey      = "TEMPORAL_ADDRESS" | ||||
|       +	KafkaBrokers         configKey      = "KAFKA_BROKERS" | ||||
|       +	RedisURI             configKey      = "REDIS" | ||||
|       +	KeroseneEnvironment  configKey      = "ENVIRONMENT" | ||||
|       +	ElasticSearchURI     configKey      = "ELASTICSEARCH_URL" | ||||
|       +	Proxy                configKey      = "PROXY" | ||||
|       +	Queue                configKey      = "QUEUE" | ||||
|       +	RunMigration         configKey      = "RUN_AUTOMIGRATION" | ||||
|       +	DefaultDataConfigDir configKey      = "DEFAULT_DATA_CONFIG_DIR" | ||||
|       ) | ||||
|        | ||||
|       var providers = []configProvider{ | ||||
|       @@ -353,3 +359,23 @@ func (c *Config) Load(name string) (string, error) { | ||||
|        | ||||
|         return val, nil | ||||
|       } | ||||
|       + | ||||
|       +func (c *Config) GetDataConfigDir() (string, error) { | ||||
|       +	retDir := defaultDataConfigDir | ||||
|       + | ||||
|       +	overriddenConfigDir, _ := c.Load(DefaultDataConfigDir.String()) | ||||
|       +	if overriddenConfigDir != "" { | ||||
|       +		retDir = overriddenConfigDir | ||||
|       +	} | ||||
|       + | ||||
|       +	// check appended / | ||||
|       +	if len(retDir) > 0 && retDir[len(retDir)-1] != '/' { | ||||
|       +		retDir += "/" | ||||
|       +	} | ||||
|       + | ||||
|       +	if _, err := os.Stat(retDir); os.IsNotExist(err) { | ||||
|       +		return "", errDataConfigDirNotExists | ||||
|       +	} | ||||
|       + | ||||
|       +	return retDir, nil | ||||
|       +} | ||||
|       diff --git a/pkg/database/client.go b/pkg/database/client.go | ||||
|       index 6fc4861..444bb5a 100644 | ||||
|       --- a/pkg/database/client.go | ||||
|       +++ b/pkg/database/client.go | ||||
|       @@ -19,17 +19,27 @@ import ( | ||||
|         "gorm.io/plugin/dbresolver" | ||||
|       ) | ||||
|        | ||||
|       -var Client *gorm.DB | ||||
|       -var ErrNilDatabaseClient = errors.New("database client is nil after setup") | ||||
|       +var ( | ||||
|       +	Client               *gorm.DB | ||||
|       +	errNilDatabaseClient = errors.New("database client is nil after setup") | ||||
|       +) | ||||
|       + | ||||
|       +func determineApplyMigration(cfg *config.Config, automigrate bool) bool { | ||||
|       +	overrideAutomigrate, _ := cfg.Load(config.RunMigration.String()) | ||||
|       + | ||||
|       +	// the env var takes precedence! | ||||
|       +	return overrideAutomigrate != "" || automigrate | ||||
|       +} | ||||
|        | ||||
|       // InitDB initializes the database with the given application name and optional dbpath for SQLite. | ||||
|       -func InitDB(appName string, dbpath ...string) error { | ||||
|       +func InitDB(appName string, automigrate bool, dbpath ...string) error { | ||||
|         var ( | ||||
|           psqlReadReplica string | ||||
|           err             error | ||||
|         ) | ||||
|        | ||||
|         cfg := config.New() | ||||
|       +	applyMigration := determineApplyMigration(&cfg, automigrate) | ||||
|        | ||||
|         // Set up a new logger with your required configuration. | ||||
|         newLogger := logger.New( | ||||
|       @@ -87,12 +97,12 @@ func InitDB(appName string, dbpath ...string) error { | ||||
|         if Client == nil { | ||||
|           log.Println("database client is nil after setup, aborting") | ||||
|        | ||||
|       -		return ErrNilDatabaseClient | ||||
|       +		return errNilDatabaseClient | ||||
|         } | ||||
|        | ||||
|         // Run auto-migration if using SQLite | ||||
|       -	if isSQLiteDB(Client) { | ||||
|       -		if err := DBAutoMigration(Client, ""); err != nil { | ||||
|       +	if applyMigration && isSQLiteDB(Client) { | ||||
|       +		if err := DBAutoMigration(Client); err != nil { | ||||
|             log.Printf("failed to run SQLite auto-migration: %v", err) | ||||
|        | ||||
|             return err | ||||
|       @@ -105,6 +115,7 @@ func InitDB(appName string, dbpath ...string) error { | ||||
|       // setupPostgres sets up a PostgreSQL database connection. | ||||
|       func setupPostgres(newLogger logger.Interface, appName, dbURI string) (*gorm.DB, error) { | ||||
|         dbURI = appendApplicationName(dbURI, appName) | ||||
|       + | ||||
|         return gorm.Open(postgres.Open(dbURI), &gorm.Config{ | ||||
|           Logger: newLogger, | ||||
|         }) | ||||
|       @@ -132,19 +143,19 @@ func setupPostgresWithReplicas(newLogger logger.Interface, appName, sourceURI, r | ||||
|        | ||||
|       // setupSQLite sets up a SQLite database connection. | ||||
|       func setupSQLite(newLogger logger.Interface, dbpath ...string) (*gorm.DB, error) { | ||||
|       -	var sqliteFile string | ||||
|       +	sqliteFile := "file::memory:?cache=shared" | ||||
|       + | ||||
|         if len(dbpath) > 0 { | ||||
|           sqliteFile = dbpath[0] | ||||
|       + | ||||
|           // Ensure the SQLite file ends with .db | ||||
|           if filepath.Ext(sqliteFile) != ".db" { | ||||
|             return nil, errors.New("SQLite file must have a .db extension") | ||||
|           } | ||||
|       -	} else { | ||||
|       -		// Default is to use an in-memory db | ||||
|       -		sqliteFile = "file::memory:?cache=shared" | ||||
|         } | ||||
|        | ||||
|         log.Printf("Using SQLite: %s", sqliteFile) | ||||
|       + | ||||
|         return gorm.Open(sqlite.Open(sqliteFile), &gorm.Config{ | ||||
|           Logger: newLogger, | ||||
|         }) | ||||
|       diff --git a/pkg/database/migrations.go b/pkg/database/migrations.go | ||||
|       index 6582b99..3210216 100644 | ||||
|       --- a/pkg/database/migrations.go | ||||
|       +++ b/pkg/database/migrations.go | ||||
|       @@ -27,6 +27,7 @@ func ApplyMigration(dbClient *gorm.DB, filename string) error { | ||||
|         } | ||||
|        | ||||
|         utils.LogSuccess("Migration applied successfully.") | ||||
|       + | ||||
|         return nil | ||||
|       } | ||||
|        | ||||
|       @@ -47,22 +48,26 @@ func GeneratePassword() (string, error) { | ||||
|         return cfg.Load("REDASH_PASSWORD") | ||||
|       } | ||||
|        | ||||
|       -func DBAutoMigration(dbClient *gorm.DB, configDir string) error { | ||||
|       +func DBAutoMigration(dbClient *gorm.DB) error { | ||||
|         utils.LogStep("Running auto-migration...") | ||||
|        | ||||
|         dbDialect := dbClient.Dialector.Name() | ||||
|       + | ||||
|         if dbDialect == "postgres" { | ||||
|           if err := PSQLStart(); err != nil { | ||||
|             return fmt.Errorf("failed to initialize database: %v", err) | ||||
|           } | ||||
|       + | ||||
|           utils.LogSuccess("Database initialization completed successfully.") | ||||
|           utils.LogStep("Generating Redash password...") | ||||
|       + | ||||
|           password, err := GeneratePassword() | ||||
|           if err != nil { | ||||
|             return fmt.Errorf("failed to generate password: %v", err) | ||||
|           } | ||||
|        | ||||
|           utils.LogStep("Creating Redash user...") | ||||
|       + | ||||
|           if err := CreateUserRedash(password); err != nil { | ||||
|             utils.LogWarning("Failed to create Redash user", err) | ||||
|           } else { | ||||
|       @@ -72,11 +77,7 @@ func DBAutoMigration(dbClient *gorm.DB, configDir string) error { | ||||
|           ReflectionMigration() | ||||
|         } | ||||
|        | ||||
|       -	if configDir != "" { | ||||
|       -		initialise.GenerateInitData(dbClient, configDir) | ||||
|       -	} else { | ||||
|       -		initialise.GenerateInitData(dbClient) | ||||
|       -	} | ||||
|       +	initialise.GenerateInitData(dbClient) | ||||
|        | ||||
|         return nil | ||||
|       } | ||||
|       @@ -91,12 +92,15 @@ func RunAutoMigration() error { | ||||
|         dbTablesValue := reflect.ValueOf(structs.DatabaseTables) | ||||
|         for i := 0; i < dbTablesValue.NumField(); i++ { | ||||
|           field := dbTablesValue.Field(i) | ||||
|       + | ||||
|           if field.Kind() == reflect.Ptr && !field.IsNil() { | ||||
|             structValue := field.Elem() | ||||
|       + | ||||
|             if err := Client.AutoMigrate(structValue.Addr().Interface()); err != nil { | ||||
|               return fmt.Errorf("failed to auto-migrate model %v: %v", structValue.Type().Name(), err) | ||||
|             } | ||||
|           } | ||||
|         } | ||||
|       + | ||||
|         return nil | ||||
|       } | ||||
|       diff --git a/pkg/initialise/configInit.go b/pkg/initialise/configInit.go | ||||
|       index d087531..323a3d7 100644 | ||||
|       --- a/pkg/initialise/configInit.go | ||||
|       +++ b/pkg/initialise/configInit.go | ||||
|       @@ -9,6 +9,7 @@ import ( | ||||
|         "reflect" | ||||
|         "strings" | ||||
|        | ||||
|       +	"github.pie.apple.com/kerosene/Core/pkg/config" | ||||
|         "github.pie.apple.com/kerosene/Core/pkg/utils" | ||||
|         "github.pie.apple.com/kerosene/Core/structs" | ||||
|         "gopkg.in/yaml.v2" | ||||
|       @@ -16,30 +17,28 @@ import ( | ||||
|         "gorm.io/gorm" | ||||
|       ) | ||||
|        | ||||
|       -//go:embed config | ||||
|       -var configFiles embed.FS | ||||
|       +var ( | ||||
|       +	//go:embed config | ||||
|       +	configFiles embed.FS | ||||
|       +	cfg         config.Config = config.New() | ||||
|       +) | ||||
|        | ||||
|       func GenerateInitData(database *gorm.DB, additionalConfigDir ...string) { | ||||
|         utils.LogHeader("INITIALISING DEFAULT DATA") | ||||
|        | ||||
|       -	configDir := "config" | ||||
|       -	if len(additionalConfigDir) > 0 { | ||||
|       -		configDir = additionalConfigDir[0] | ||||
|       - | ||||
|       -		utils.LogInfo(fmt.Sprintf("Using additional config directory: %s", configDir)) | ||||
|       +	configDir, err := cfg.GetDataConfigDir() | ||||
|        | ||||
|       -		if _, err := os.Stat(configDir); os.IsNotExist(err) { | ||||
|       -			utils.LogWarning(fmt.Sprintf("Config directory does not exist: %s", configDir), err) | ||||
|       -		} | ||||
|       -	} else { | ||||
|       -		utils.LogInfo("Using Default Config") | ||||
|       +	if err != nil { | ||||
|       +		utils.LogFatal("Cannot open config directory: %w", err) | ||||
|         } | ||||
|        | ||||
|       +	utils.LogInfo("Using data config directory: " + configDir) | ||||
|       + | ||||
|         // Get the list of directories in the embedded config directory | ||||
|       -	embeddedConfigDirs := getConfigDirs("config") | ||||
|       +	embeddedConfigDirs := getConfigDirs(configDir) | ||||
|        | ||||
|         // Process the embedded configs | ||||
|       -	processConfigs(database, embeddedConfigDirs, "config/") | ||||
|       +	processConfigs(database, embeddedConfigDirs, configDir) | ||||
|        | ||||
|         // If an additional config directory is provided, process it after the embedded configs | ||||
|         if len(additionalConfigDir) > 0 { | ||||
|       @@ -47,7 +46,7 @@ func GenerateInitData(database *gorm.DB, additionalConfigDir ...string) { | ||||
|        | ||||
|           utils.LogHeader("ADDITIONAL DATA") | ||||
|        | ||||
|       -		processConfigs(database, additionalConfigDirs, configDir+"/") | ||||
|       +		processConfigs(database, additionalConfigDirs, configDir) | ||||
|         } | ||||
|        | ||||
|         utils.LogInfo(fmt.Sprintf("Initialised Default Data for environment '%s'.", os.Getenv("ENVIRONMENT"))) | ||||
|       @@ -113,9 +112,11 @@ func insertPrioritizedStruct(db *gorm.DB, configDirs []string, configPath, struc | ||||
|       } | ||||
|        | ||||
|       func getConfigDirs(path string) []string { | ||||
|       -	var configDirs []string | ||||
|       -	var entries []os.DirEntry | ||||
|       -	var err error | ||||
|       +	var ( | ||||
|       +		configDirs []string | ||||
|       +		entries    []os.DirEntry | ||||
|       +		err        error | ||||
|       +	) | ||||
|        | ||||
|         // Check if the path is the default embedded directory or an external path | ||||
|         if path == "config" { | ||||
| 
 | ||||
|       ### OUTPUT:  | ||||
| 
 | ||||
|       **Title:** feat(app): add event listeners for submit and reset buttons | ||||
|       feat(config): add new env vars and refactor database initialization | ||||
| 
 | ||||
|       **Summary:** | ||||
|       This PR adds event listeners for the submit and reset buttons in the application. It introduces a new function to set up these event listeners and implements a handler for the reset button. | ||||
|       This PR introduces new environment variables and improves our database initialization and migration process: | ||||
| 
 | ||||
|       **Details of Changes:** | ||||
|       1. **src/app.js:** | ||||
|         - Added a new function `setupEventListeners` to attach click event listeners to the submit and reset buttons. | ||||
|         - Implemented the `handleReset` function to reset the form and log the reset action. | ||||
|         - Included a TODO comment to add other listeners, referencing issue [#123](https://github.com/user/project/issue/123). | ||||
|       - Add new environment variables: | ||||
|         1. `RUN_AUTOMIGRATION`: to control auto-migration | ||||
|         2. `DEFAULT_DATA_CONFIG_DIR`: to specify the data configuration directory | ||||
|       - Implement conditional auto-migration support based on `RUN_AUTOMIGRATION` or function parameters | ||||
|       - Refactor database client initialization for better error handling and flexibility | ||||
|       - Streamline the migration process in the main application and various commands | ||||
| 
 | ||||
|       **Impact:** | ||||
|       - **Backward Compatibility:** The changes are backward compatible. | ||||
|       - **Performance Implications:** Minimal performance impact due to the addition of event listeners. | ||||
|       - **New Dependencies:** No new dependencies introduced. | ||||
|       Key changes: | ||||
|       1. Introduce `RUN_AUTOMIGRATION` and `DEFAULT_DATA_CONFIG_DIR` environment variables | ||||
|       2. Add `applyMigrations` flag in database initialization | ||||
|       3. Implement `GetDataConfigDir()` method to handle default and overridden config directories | ||||
|       4. Refactor `InitDB()` to accept `automigrate` parameter | ||||
|       5. Update `cmd/api/main.go`, `cmd/fixtures/fixtures.go`, and `pkg/advans/connect.go` to use new initialization process | ||||
|       6. Simplify `cmd/migrator/migrator.go` to leverage the new auto-migration feature | ||||
|       7. Improve error handling and logging throughout the affected files | ||||
|   ''; | ||||
| in | ||||
| { | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user