- # delete all sessions meeting a given +condition+. it is the
- # caller's responsibility to pass a valid sql condition
- def delete_all(condition=nil)
- if condition
- session_connection.exec("DELETE FROM sessions WHERE #{condition}")
- else
- session_connection.exec("DELETE FROM sessions")
- end
+ # Internal methods for generating SQL
+ # Get the next ID from the sequence
+ def next_id
+ cursor = session_connection.exec("SELECT #{table_name}_seq.nextval FROM dual")
+ id = cursor.fetch.first.to_i
+ cursor.close
+ id
+ end
+
+ # Dynamically generate finder SQL so we can include our special columns
+ def find_session_sql
+ @find_session_sql ||=
+ "SELECT " + ([:id, :data] + native_columns).join(', ') +
+ " FROM #{table_name} WHERE session_id = :session_id AND rownum = 1"
+ end
+
+ def insert_session_sql
+ @insert_session_sql ||=
+ "INSERT INTO #{table_name} (" + ([:id, :data, :session_id] + native_columns + [:created_at, :updated_at]).join(', ') + ")" +
+ " VALUES (" + ([:id, :data, :session_id] + native_columns).collect{|col| ":#{col}" }.join(', ') +
+ " , SYSDATE, SYSDATE)"