func()

in src/middleware/db.go [38:80]


func (s *SQLStorage) Init(user, password, host, name, conn string) error {
	var err error
	instanceConnectionName := conn

	s.log("Opening connection")

	if password == "" {
		s.log("method is service account")
		trimmedUser := strings.ReplaceAll(user, ".gserviceaccount.com", "")
		if s.db, err = connectWithConnector(trimmedUser, password, name, instanceConnectionName); err != nil {
			return fmt.Errorf("could not open connection using Service Account: %s", err)
		}
	} else {
		s.log("method is database user")
		if s.db, err = connectDirect(user, password, name, host); err != nil {
			return fmt.Errorf("could open connection using username/password: %s", err)
		}
	}

	s.log("Connection opened")

	s.log("Pinging")
	if err := s.db.Ping(); err != nil {
		return fmt.Errorf("could not ping database: %s", err)
	}
	s.log("Pinging complete")

	populated, err := s.SchemaExists()
	if err != nil {
		return fmt.Errorf("schema exists failure: %s", err)
	}

	if !populated {
		s.log("populating schema")
		if err := s.SchemaInit(); err != nil {
			return fmt.Errorf("cannot populate schema: %s", err)
		}
	}

	s.log("Schema populated")

	return nil
}