USING: accessors combinators db db.mysql.ffi db.mysql.lib db.private db.queries db.tuples db.tuples.private db.types destructors interpolate io.streams.string kernel locals math math.parser mysql.ffi mysql.lib namespaces nmake random sequences sequences.deep slots.syntax strings ; IN: db.mysql TUPLE: mysql-db mysqlconn { host string initial: "127.0.0.1" } { user string initial: "root" } { password string } { database string initial: "test" } { port integer initial: 3306 } { unixsocket string } { clientflag integer } resulthandle ; : ( host user password -- mysql-db ) [ mysql-db new ] 3dip set-slots[ password user host ] ; : init-with-db ( mysql-db db -- mysql-db ) >>database ; TUPLE: mysql-db-connection < db-connection ; : ( -- db-connection ) mysql-db-connection new-db-connection f mysql_init >>handle ; M:: mysql-db db-open ( db -- db-connection ) db [ >>mysqlconn ] keep handle>> swap slots[ host user password database port unixsocket clientflag ] mysql_real_connect db swap >>resulthandle mysqlconn>> ; M: mysql-db-connection db-close ( handle -- ) mysql_close ; TUPLE: mysql-statement < statement ; TUPLE: mysql-result-set < result-set has-more? ;