package railo.runtime.type.scope.storage.db; import java.sql.SQLException; import railo.commons.io.log.Log; import railo.runtime.config.Config; import railo.runtime.db.DatasourceConnection; import railo.runtime.exp.PageException; import railo.runtime.type.Query; import railo.runtime.type.Struct; import railo.runtime.type.scope.storage.StorageScopeEngine; import railo.runtime.type.scope.storage.StorageScopeListener; import railo.runtime.type.scope.storage.clean.DatasourceStorageScopeCleaner; public interface SQLExecutor { /** * does a select statement on the datasource to get data * @param config Config of the current context * @param cfid CFID of the current user * @param applicationName name of the current application context * @param dc Datasource Connection to use * @param type storage type (Scope.SCOPE_CLIENT,Scope.SCOPE_SESSION) * @param log * @param createTableIfNotExist do create the table if not existing * @return data matching criteria * @throws PageException * @throws SQLException */ public Query select(Config config, String cfid,String applicationName, DatasourceConnection dc, int type, Log log, boolean createTableIfNotExist) throws PageException,SQLException; /** * updates the data in the datasource for a specific user (CFID), if the data not exist, a new record is created * @param config Config of the current context * @param cfid CFID of the current user * @param applicationName name of the current application context * @param dc Datasource Connection to use * @param type storage type (Scope.SCOPE_CLIENT,Scope.SCOPE_SESSION) * @param data data to store * @param timeSpan timespan in millis * @param log * @throws PageException * @throws SQLException */ public void update(Config config, String cfid,String applicationName, DatasourceConnection dc,int type,Struct data,long timeSpan, Log log) throws PageException,SQLException; /** * deletes the data in the datasource for a specific user (CFID), if there is no data for this user nothing is happeing * @param config Config of the current context * @param cfid CFID of the current user * @param applicationName name of the current application context * @param dc Datasource Connection to use * @param type storage type (Scope.SCOPE_CLIENT,Scope.SCOPE_SESSION) * @param log * @throws PageException * @throws SQLException */ public void delete(Config config, String cfid, String applicationName, DatasourceConnection dc, int type, Log log) throws PageException,SQLException; public void clean(Config config, DatasourceConnection dc, int type, StorageScopeEngine engine, DatasourceStorageScopeCleaner cleaner, StorageScopeListener listener, Log log) throws PageException,SQLException; }