Changeset ef1c1c7 for server/db/db.go


Ignore:
Timestamp:
09/24/26 17:43:19 (6 days ago)
Author:
Stefan <trsunovstefan@…>
Branches:
main
Children:
0cee8ec
Parents:
a531b45
Message:

Wiki docs, phase 6 and phase 7 added

File:
1 edited

Legend:

Unmodified
Added
Removed
  • server/db/db.go

    ra531b45 ref1c1c7  
    1111        "strings"
    1212
    13         _ "github.com/lib/pq"
     13        "github.com/lib/pq"
    1414)
    1515
    … …  
    1919// which directory the program is started from.
    2020//
    21 //go:embed schema_creation.sql data_load.sql
     21//go:embed schema_creation.sql advanced_db.sql data_load.sql
    2222var sqlScripts embed.FS
    2323
    … …  
    3636        )
    3737
    38         var err error
    39         DB, err = sql.Open("postgres", dsn)
    40         if err != nil {
    41                 return fmt.Errorf("sql.Open: %w", err)
     38        // Optional SSH tunnel, the same thing DBeaver's "SSH" tab does. When
     39        // SSH_HOST is set, DBHOST/DBPORT are resolved from the SSH server's side
     40        // (for the faculty server that is usually localhost:5432).
     41        if sshHost := os.Getenv("SSH_HOST"); sshHost != "" {
     42                dialer, err := newSSHDialer(sshHost)
     43                if err != nil {
     44                        return err
     45                }
     46                connector, err := pq.NewConnector(dsn)
     47                if err != nil {
     48                        return fmt.Errorf("pq.NewConnector: %w", err)
     49                }
     50                connector.Dialer(dialer)
     51                DB = sql.OpenDB(connector)
     52        } else {
     53                var err error
     54                DB, err = sql.Open("postgres", dsn)
     55                if err != nil {
     56                        return fmt.Errorf("sql.Open: %w", err)
     57                }
    4258        }
    4359        if err := DB.Ping(); err != nil {
    … …  
    7288}
    7389
    74 // InitSchema runs schema_creation.sql then data_load.sql.
     90// InitSchema runs schema_creation.sql, advanced_db.sql (P7) and data_load.sql.
    7591// Destructive: drops the `project` schema. Intended for the -init flag.
    7692func InitSchema() error {
    77         log.Println("Running schema_creation.sql ...")
    78         if err := runScript("schema_creation.sql"); err != nil {
    79                 return err
     93        for _, name := range []string{"schema_creation.sql", "advanced_db.sql"} {
     94                log.Printf("Running %s ...", name)
     95                if err := runScript(name); err != nil {
     96                        return err
     97                }
    8098        }
    8199        if err := LoadData(); err != nil {
Note: See TracChangeset for help on using the changeset viewer.