1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- package models
- import (
- "bufio"
- "fmt"
- "io/fs"
- "log/slog"
- "strings"
- )
- import (
- "gorm.io/gorm"
- )
- import (
- "resource-server/static"
- )
- func initTable(sqlFilePath string) error {
- slog.Info("initTable ...", "file", sqlFilePath)
- file, err := static.GetSqlFile(sqlFilePath)
- if err != nil {
- return fmt.Errorf("error opening SQL file: %w", err)
- }
- defer func(file fs.File) {
- err := file.Close()
- if err != nil {
- slog.Error("error closing SQL file:", err)
- }
- }(file)
- scanner := bufio.NewScanner(file)
- err = DB.Transaction(func(tx *gorm.DB) error {
- for scanner.Scan() {
- line := strings.TrimSpace(scanner.Text())
- result := tx.Exec(line)
- if result.Error != nil {
- return fmt.Errorf("error executing INSERT statement: %s\tError: %w", line, result.Error)
- }
- }
- if err := scanner.Err(); err != nil {
- return fmt.Errorf("error reading SQL file: %w", err)
- }
- return nil
- })
- if err != nil {
- return err
- }
- slog.Info("Processed SQL file: %s.\n", sqlFilePath)
- return nil
- }
|