enode/docs/enode.org

3.8 KiB

Processes

Startup

  • (enode project)

    • (enode-available-projects)

      • (enode-get-projects)

        • (load-file enode-projects-file)
      • (enode-project-available project)

        • Test to see if (e.g.) ~/development/<project>/scripts/sql/<project>_ENODE.sql exists
    • (setq enode-current-connection-type <connection-type-of-project>)
    • (enode-start-engine)

      • (enode-oracle-start-sql-engine)

        • (call-interactively 'sql-oracle). The command-line option set for sqlplus in the emacs customisation system include /nolog, which leaves the need to connect to a database until after the process has commenced.
        • Set SQL buffer settings
      • MySQL addition (enode-mysql-start-engine)

        • t: nothing can happen here as mysql doesn't support starting an interactive shell.
    • Open the *_ENODE.sql file for the project
    • (setq enode-up t) to declare that enode has started.
    • (enode-connection) called interactively

      • (enode-get-connections)

        • (enode-load-connections-list)

          • (load-file enode-connections-file)
      • (enode-get-connections). As above.
      • (enode-add-new-connection connection-description)

        • (enode-load-connections-list). As above.
        • (enode-get-connections). As above.
        • Get attributes:

          • MySQL addition: This needs to be genericised (or, proxied, really) to support capturing the different details required for the different connection types:

            Connection type Username password database hostname port
            oracle Y Y tnsnames entry N N
            mysql Y Y Optional Y Defaults to 3306, yes if not this
          • conn-user: Username
          • conn-connection: Database connection: modelled by Oracle's TNSNames details
          • conn-prompt: a three-character designator to use as the SQL*Plus prompt.
        • Add these details as a record in the current-type-connections list.
        • Update all-connections with the new current-type-connections list.
        • Update enode-connections-file.
        • (enode-load-connections-list). As above.
      • (enode-connect connection-description)

        • (enode-get-connections). As above.
        • Access and, maybe, set enode-passwords-in-use.
        • Based on enode-current-connection-type, one of the following:

          • (enode-oracle-connect conn-user conn-pass conn-connection conn-prompt)

            • Issue the commands to the already-created iSQL session:

              connect <conn-user>/<conn-pass>@<conn-connection>
              set serverout on
              set sqlprompt "<conn-prompt>> "
              
          • (enode-mysql-connect conn-user conn-pass conn-database conn-hostname conn-port conn-prompt)

            • If the buffer for the SQL file has an iSQL buffer:

              • If that iSQL buffer has a running process:

                • (enode-mysql-reconnect conn-user conn-pass conn-database conn-hostname conn-port)
                • Otherwise:

                  • Kill iSQL buffer
                  • (call-interactively 'sql-mysql)
              • Otherwise (call-interactively 'sql-mysql)
            • (enode-mysql-set-prompt conn-prompt)
        • (setq enode-currrent-connection connection-description)
        • (setq enode-connected t)