* 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//scripts/sql/_ENODE.sql= exists + =(setq enode-current-connection-type )= + =(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 /@ : set serverout on : set sqlprompt "> " + =(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)=