2019-05-23 15:54:48 +00:00
|
|
|
|
|
|
|
* 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
|
2019-05-23 16:24:23 +00:00
|
|
|
* *MySQL addition* =(enode-mysql-start-engine)=
|
|
|
|
- =t=: nothing can happen here as mysql doesn't support
|
|
|
|
starting an interactive shell.
|
2019-05-23 15:54:48 +00:00
|
|
|
+ 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:
|
2019-05-24 13:47:58 +00:00
|
|
|
+ *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 |
|
|
|
|
|-----------------+----------+----------+----------------+----------+-----------------------------------|
|
2019-05-23 15:54:48 +00:00
|
|
|
+ =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=.
|
2019-05-24 13:47:58 +00:00
|
|
|
- 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)=
|
2019-05-23 15:54:48 +00:00
|
|
|
- =(setq enode-currrent-connection connection-description)=
|
|
|
|
- =(setq enode-connected t)=
|