enode/docs/enode.org

66 lines
3.8 KiB
Org Mode

* 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)=