indexing
     status: "See notice at end of class"
     date: "$Date$"
     revision: "$Revision$"
     access: store
     product: eiffelstore
     database: all_bases

class interface
     DB_STORE

create

     make
                 -- Create an interface object to store in active base.

feature -- Status report

     immediate_execution: BOOLEAN
                 -- Are requests immediately executed?
                 -- (default is no).
                 -- (from DB_EXEC_USE)

     is_tracing: BOOLEAN
                 -- Is trace option for SQL queries on?
                 -- (from DB_EXEC_USE)

     owns_repository: BOOLEAN
                 -- Is Current linked to a repository?

     trace_output: FILE
                 -- Trace destination file
                 -- (from DB_EXEC_USE)
     
feature -- Status report

     is_connected: BOOLEAN
                 -- Has connection to the database server succeeded?
                 -- (from DB_STATUS_USE)

     is_ok: BOOLEAN
                 -- Is last SQL statement ok ?
                 -- (from DB_STATUS_USE)
     
feature -- Status setting

     set_immediate
                 -- Set queries to be executed with a
                 -- `EXECUTE IMMEDIATE' SQL  statement.
                 -- (from DB_EXEC_USE)
           ensure -- from DB_EXEC_USE
                 execution_status: immediate_execution

     set_repository (repository: DB_REPOSITORY)
                 -- Set implementation repository with repository.
           require
                 repository_not_void: repository /= void
           ensure
                 owns_repository: owns_repository

     set_trace
                 -- Trace queries sent to database server.
                 -- (from DB_EXEC_USE)
           ensure -- from DB_EXEC_USE
                 trace_status: is_tracing

     unset_immediate
                 -- Set queries to be executed with a
                 -- PREPARE followed by a EXECUTE SQL statement.
                 -- (from DB_EXEC_USE)
           ensure -- from DB_EXEC_USE
                 execution_status: not immediate_execution

     unset_trace
                 -- Do not trace queries sent to database server.
                 -- (from DB_EXEC_USE)
           ensure -- from DB_EXEC_USE
                 trace_status: not is_tracing
     
feature -- Basic operations

     force (object: ANY)
                 -- Insert object in repository attached to Current.
           require
                 connected: is_connected
                 object_exists: object /= void
                 is_ok: is_ok
                 owns_repository: owns_repository

     put (object: ANY)
                 -- Insert object in repository attached to Current.
           require
                 connected: is_connected
                 object_exists: object /= void
                 is_ok: is_ok
                 owns_repository: owns_repository
     
invariant

           -- from ANY
     reflexive_equality: standard_is_equal (Current)
     reflexive_conformance: conforms_to (Current)

end -- class DB_STORE