Added persistence support for Eiffel sqlite3 wrapper.
Updated existing persistency solution to be more generic to any db solution.
This commit is contained in:
@@ -26,6 +26,7 @@
|
|||||||
<library name="cms_openid_module" location="..\..\modules\openid\openid-safe.ecf" readonly="false"/>
|
<library name="cms_openid_module" location="..\..\modules\openid\openid-safe.ecf" readonly="false"/>
|
||||||
<library name="cms_admin_module" location="..\..\modules\admin\admin-safe.ecf" readonly="false"/>
|
<library name="cms_admin_module" location="..\..\modules\admin\admin-safe.ecf" readonly="false"/>
|
||||||
<library name="cms_recent_changes_module" location="..\..\modules\recent_changes\recent_changes-safe.ecf" readonly="false"/>
|
<library name="cms_recent_changes_module" location="..\..\modules\recent_changes\recent_changes-safe.ecf" readonly="false"/>
|
||||||
|
<library name="persistence_sqlite3" location="..\..\library\persistence\sqlite3\sqlite3-safe.ecf" readonly="false"/>
|
||||||
<library name="persistence_store_odbc" location="..\..\library\persistence\store_odbc\store_odbc-safe.ecf" readonly="false"/>
|
<library name="persistence_store_odbc" location="..\..\library\persistence\store_odbc\store_odbc-safe.ecf" readonly="false"/>
|
||||||
<!--
|
<!--
|
||||||
<library name="persistence_store_mysql" location="..\..\library\persistence\store_mysql\store_mysql-safe.ecf" readonly="false"/>
|
<library name="persistence_store_mysql" location="..\..\library\persistence\store_mysql\store_mysql-safe.ecf" readonly="false"/>
|
||||||
|
|||||||
@@ -9,9 +9,9 @@ email=your@email.com
|
|||||||
theme=bootstrap
|
theme=bootstrap
|
||||||
|
|
||||||
[mailer]
|
[mailer]
|
||||||
smtp=localhost:25
|
#smtp=localhost:25
|
||||||
#sendmail=/usr/bin/sendmail
|
#sendmail=/usr/bin/sendmail
|
||||||
#output=@stderr
|
output=@stderr
|
||||||
|
|
||||||
[modules]
|
[modules]
|
||||||
# Module status
|
# Module status
|
||||||
@@ -45,3 +45,4 @@ feed.forum.condition=is_front
|
|||||||
[admin]
|
[admin]
|
||||||
# CMS Installation, are accessible by "all", "none" or uppon "permission". (default is none)
|
# CMS Installation, are accessible by "all", "none" or uppon "permission". (default is none)
|
||||||
installation_access=permission
|
installation_access=permission
|
||||||
|
installation_access=all
|
||||||
|
|||||||
@@ -1,10 +1,15 @@
|
|||||||
{
|
{
|
||||||
"database": {
|
"database": {
|
||||||
"datasource": {
|
"datasource": {
|
||||||
"driver": "odbc",
|
"driver": "sqlite3",
|
||||||
"environment": "odbc-sqlite"
|
"environment": "sqlite3",
|
||||||
|
"-driver": "odbc",
|
||||||
|
"-environment": "odbc-sqlite"
|
||||||
},
|
},
|
||||||
"environments": {
|
"environments": {
|
||||||
|
"sqlite3": {
|
||||||
|
"connection_string":"Database=./site/database.sqlite3;"
|
||||||
|
},
|
||||||
"odbc-sqlite": {
|
"odbc-sqlite": {
|
||||||
"connection_string":"Driver=SQLite3 ODBC Driver;Database=./site/database.sqlite;LongNames=0;Timeout=1000;NoTXN=0;SyncPragma=NORMAL;StepAPI=0;"
|
"connection_string":"Driver=SQLite3 ODBC Driver;Database=./site/database.sqlite;LongNames=0;Timeout=1000;NoTXN=0;SyncPragma=NORMAL;StepAPI=0;"
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -47,6 +47,7 @@ feature -- CMS setup
|
|||||||
to_implement ("To implement custom storage")
|
to_implement ("To implement custom storage")
|
||||||
end
|
end
|
||||||
-- a_setup.storage_drivers.force (create {CMS_STORAGE_STORE_MYSQL_BUILDER}.make, "mysql")
|
-- a_setup.storage_drivers.force (create {CMS_STORAGE_STORE_MYSQL_BUILDER}.make, "mysql")
|
||||||
|
a_setup.storage_drivers.force (create {CMS_STORAGE_SQLITE3_BUILDER}.make, "sqlite3")
|
||||||
a_setup.storage_drivers.force (create {CMS_STORAGE_STORE_ODBC_BUILDER}.make, "odbc")
|
a_setup.storage_drivers.force (create {CMS_STORAGE_STORE_ODBC_BUILDER}.make, "odbc")
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@@ -86,8 +86,23 @@ feature -- Query
|
|||||||
sql_post_execution
|
sql_post_execution
|
||||||
end
|
end
|
||||||
|
|
||||||
sql_change (a_sql_statement: STRING; a_params: detachable STRING_TABLE [detachable ANY])
|
sql_finalize
|
||||||
-- Execute an sql query change `a_sql_statement' with the params `a_params'.
|
-- <Precursor>
|
||||||
|
do
|
||||||
|
-- N/A
|
||||||
|
end
|
||||||
|
|
||||||
|
sql_insert (a_sql_statement: STRING; a_params: detachable STRING_TABLE [detachable ANY])
|
||||||
|
-- <Precursor>
|
||||||
|
do
|
||||||
|
check_sql_query_validity (a_sql_statement, a_params)
|
||||||
|
db_handler.set_query (create {DATABASE_QUERY}.data_reader (a_sql_statement, a_params))
|
||||||
|
db_handler.execute_change
|
||||||
|
sql_post_execution
|
||||||
|
end
|
||||||
|
|
||||||
|
sql_modify (a_sql_statement: STRING; a_params: detachable STRING_TABLE [detachable ANY])
|
||||||
|
-- <Precursor>
|
||||||
do
|
do
|
||||||
check_sql_query_validity (a_sql_statement, a_params)
|
check_sql_query_validity (a_sql_statement, a_params)
|
||||||
db_handler.set_query (create {DATABASE_QUERY}.data_reader (a_sql_statement, a_params))
|
db_handler.set_query (create {DATABASE_QUERY}.data_reader (a_sql_statement, a_params))
|
||||||
@@ -133,4 +148,32 @@ feature -- Query
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
sql_read_integer_32 (a_index: INTEGER): INTEGER_32
|
||||||
|
-- Retrieved value at `a_index' position in `item'.
|
||||||
|
local
|
||||||
|
l_item: like sql_item
|
||||||
|
do
|
||||||
|
l_item := sql_item (a_index)
|
||||||
|
if attached {INTEGER_32} l_item as i then
|
||||||
|
Result := i
|
||||||
|
elseif attached {INTEGER_32_REF} l_item as l_value then
|
||||||
|
Result := l_value.item
|
||||||
|
else
|
||||||
|
check is_integer_32: False end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
sql_read_date_time (a_index: INTEGER): detachable DATE_TIME
|
||||||
|
-- Retrieved value at `a_index' position in `item'.
|
||||||
|
local
|
||||||
|
l_item: like sql_item
|
||||||
|
do
|
||||||
|
l_item := sql_item (a_index)
|
||||||
|
if attached {DATE_TIME} l_item as dt then
|
||||||
|
Result := dt
|
||||||
|
else
|
||||||
|
check is_date_time_or_null: l_item = Void end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|||||||
33
library/persistence/sqlite3/sqlite3-safe.ecf
Normal file
33
library/persistence/sqlite3/sqlite3-safe.ecf
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||||
|
<system xmlns="http://www.eiffel.com/developers/xml/configuration-1-13-0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.eiffel.com/developers/xml/configuration-1-13-0 http://www.eiffel.com/developers/xml/configuration-1-13-0.xsd" name="persistence_sqlite3" uuid="4E536C92-A09F-4305-8230-2EC5ABC51416" library_target="persistence_sqlite3">
|
||||||
|
<target name="persistence_sqlite3">
|
||||||
|
<root all_classes="true"/>
|
||||||
|
<option warning="true" void_safety="all">
|
||||||
|
<assertions precondition="true" postcondition="true" check="true" invariant="true" loop="true" supplier_precondition="true"/>
|
||||||
|
</option>
|
||||||
|
<setting name="console_application" value="true"/>
|
||||||
|
<library name="base" location="$ISE_LIBRARY\library\base\base-safe.ecf"/>
|
||||||
|
<library name="cms" location="..\..\..\cms-safe.ecf"/>
|
||||||
|
<library name="crypto" location="$ISE_LIBRARY\unstable\library\text\encryption\crypto\crypto-safe.ecf"/>
|
||||||
|
<library name="encoder" location="$ISE_LIBRARY\contrib\library\web\framework\ewf\text\encoder\encoder-safe.ecf"/>
|
||||||
|
<library name="error" location="$ISE_LIBRARY\contrib\library\utility\general\error\error-safe.ecf"/>
|
||||||
|
<library name="json" location="$ISE_LIBRARY\contrib\library\text\parser\json\library\json-safe.ecf" readonly="false"/>
|
||||||
|
<library name="app_env" location="..\..\app_env\app_env-safe.ecf"/>
|
||||||
|
<library name="logging" location="$ISE_LIBRARY\library\runtime\logging\logging-safe.ecf"/>
|
||||||
|
<library name="model" location="..\..\model\cms_model-safe.ecf"/>
|
||||||
|
<library name="sqlite3" location="$ISE_LIBRARY\unstable\library\persistency\database\sqlite3\sqlite-safe.ecf" readonly="false"/>
|
||||||
|
<library name="thread" location="$ISE_LIBRARY\library\thread\thread-safe.ecf"/>
|
||||||
|
<library name="time" location="$ISE_LIBRARY\library\time\time-safe.ecf"/>
|
||||||
|
<!--
|
||||||
|
<cluster name="common" location="..\implementation\store\" recursive="true"/>
|
||||||
|
-->
|
||||||
|
<cluster name="persistence_sqlite" location=".\src\" recursive="true">
|
||||||
|
<file_rule>
|
||||||
|
<exclude>/EIFGENs$</exclude>
|
||||||
|
<exclude>/CVS$</exclude>
|
||||||
|
<exclude>/.svn$</exclude>
|
||||||
|
<exclude>/old$</exclude>
|
||||||
|
</file_rule>
|
||||||
|
</cluster>
|
||||||
|
</target>
|
||||||
|
</system>
|
||||||
408
library/persistence/sqlite3/src/cms_storage_sqlite3.e
Normal file
408
library/persistence/sqlite3/src/cms_storage_sqlite3.e
Normal file
@@ -0,0 +1,408 @@
|
|||||||
|
note
|
||||||
|
description: "Summary description for {CMS_STORAGE_MYSQL}."
|
||||||
|
date: "$Date: 2015-02-09 22:29:56 +0100 (lun., 09 févr. 2015) $"
|
||||||
|
revision: "$Revision: 96596 $"
|
||||||
|
|
||||||
|
class
|
||||||
|
CMS_STORAGE_SQLITE3
|
||||||
|
|
||||||
|
inherit
|
||||||
|
CMS_STORAGE_SQL
|
||||||
|
redefine
|
||||||
|
sql_read_date_time, sql_read_integer_32
|
||||||
|
end
|
||||||
|
|
||||||
|
CMS_CORE_STORAGE_SQL_I
|
||||||
|
redefine
|
||||||
|
sql_read_date_time, sql_read_integer_32
|
||||||
|
end
|
||||||
|
|
||||||
|
CMS_USER_STORAGE_SQL_I
|
||||||
|
redefine
|
||||||
|
sql_read_date_time, sql_read_integer_32
|
||||||
|
end
|
||||||
|
|
||||||
|
SQLITE_BIND_ARG_MARSHALLER
|
||||||
|
|
||||||
|
REFACTORING_HELPER
|
||||||
|
|
||||||
|
create
|
||||||
|
make
|
||||||
|
|
||||||
|
feature {NONE} -- Initialization
|
||||||
|
|
||||||
|
make (db: SQLITE_DATABASE)
|
||||||
|
do
|
||||||
|
sqlite := db
|
||||||
|
create error_handler.make
|
||||||
|
end
|
||||||
|
|
||||||
|
sqlite: SQLITE_DATABASE
|
||||||
|
-- Associated SQLite database.
|
||||||
|
|
||||||
|
feature -- Status report
|
||||||
|
|
||||||
|
is_initialized: BOOLEAN
|
||||||
|
-- Is storage initialized?
|
||||||
|
do
|
||||||
|
Result := has_user
|
||||||
|
end
|
||||||
|
|
||||||
|
feature -- Status report
|
||||||
|
|
||||||
|
is_available: BOOLEAN
|
||||||
|
-- Is storage available?
|
||||||
|
do
|
||||||
|
Result := sqlite.is_interface_usable
|
||||||
|
end
|
||||||
|
|
||||||
|
feature -- Basic operation
|
||||||
|
|
||||||
|
close
|
||||||
|
-- Close/disconnect current storage.
|
||||||
|
do
|
||||||
|
sqlite.close
|
||||||
|
end
|
||||||
|
|
||||||
|
feature -- Execution
|
||||||
|
|
||||||
|
transaction_depth: INTEGER
|
||||||
|
|
||||||
|
sql_begin_transaction
|
||||||
|
-- Start a database transtaction.
|
||||||
|
do
|
||||||
|
if transaction_depth = 0 then
|
||||||
|
sqlite.begin_transaction (False)
|
||||||
|
end
|
||||||
|
transaction_depth := transaction_depth + 1
|
||||||
|
end
|
||||||
|
|
||||||
|
sql_rollback_transaction
|
||||||
|
-- Rollback updates in the database.
|
||||||
|
do
|
||||||
|
if sqlite.is_in_transaction then
|
||||||
|
sqlite.rollback
|
||||||
|
end
|
||||||
|
transaction_depth := transaction_depth - 1
|
||||||
|
end
|
||||||
|
|
||||||
|
sql_commit_transaction
|
||||||
|
-- Commit updates in the database.
|
||||||
|
do
|
||||||
|
if sqlite.is_in_transaction then
|
||||||
|
sqlite.commit
|
||||||
|
end
|
||||||
|
transaction_depth := transaction_depth - 1
|
||||||
|
end
|
||||||
|
|
||||||
|
sql_post_execution
|
||||||
|
-- Post database execution.
|
||||||
|
-- note: execute after each `sql_query' and `sql_change'.
|
||||||
|
do
|
||||||
|
-- FIXME
|
||||||
|
if sqlite.has_error then
|
||||||
|
write_critical_log (generator + ".post_execution Error occurred!")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
feature -- Operation
|
||||||
|
|
||||||
|
last_statement: detachable SQLITE_STATEMENT
|
||||||
|
|
||||||
|
last_sqlite_result_cursor: detachable SQLITE_STATEMENT_ITERATION_CURSOR
|
||||||
|
|
||||||
|
sql_query (a_sql_statement: STRING; a_params: detachable STRING_TABLE [detachable ANY])
|
||||||
|
-- <Precursor>
|
||||||
|
local
|
||||||
|
st: SQLITE_QUERY_STATEMENT
|
||||||
|
do
|
||||||
|
last_sqlite_result_cursor := Void
|
||||||
|
create st.make (a_sql_statement, sqlite)
|
||||||
|
last_statement := st
|
||||||
|
if st.is_compiled then
|
||||||
|
if a_params /= Void then
|
||||||
|
check st.has_arguments end
|
||||||
|
last_sqlite_result_cursor := st.execute_new_with_arguments (sqlite_arguments (a_params))
|
||||||
|
else
|
||||||
|
last_sqlite_result_cursor := st.execute_new
|
||||||
|
end
|
||||||
|
else
|
||||||
|
error_handler.add_custom_error (1, "invalid query", "query compilation failed!")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
sql_finalize
|
||||||
|
-- Finalize sql query (i.e destroy previous query statement.
|
||||||
|
do
|
||||||
|
if attached last_statement as st then
|
||||||
|
st.dispose
|
||||||
|
end
|
||||||
|
last_sqlite_result_cursor := Void
|
||||||
|
last_statement := Void
|
||||||
|
end
|
||||||
|
|
||||||
|
sql_insert (a_sql_statement: STRING; a_params: detachable STRING_TABLE [detachable ANY])
|
||||||
|
-- <Precursor>
|
||||||
|
local
|
||||||
|
st: SQLITE_INSERT_STATEMENT
|
||||||
|
do
|
||||||
|
last_sqlite_result_cursor := Void
|
||||||
|
create st.make (a_sql_statement, sqlite)
|
||||||
|
last_statement := st
|
||||||
|
if st.is_compiled then
|
||||||
|
if a_params /= Void then
|
||||||
|
check st.has_arguments end
|
||||||
|
last_sqlite_result_cursor := st.execute_new_with_arguments (sqlite_arguments (a_params))
|
||||||
|
else
|
||||||
|
last_sqlite_result_cursor := st.execute_new
|
||||||
|
end
|
||||||
|
else
|
||||||
|
error_handler.add_custom_error (1, "invalid query", "query compilation failed!")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
sql_modify (a_sql_statement: STRING; a_params: detachable STRING_TABLE [detachable ANY])
|
||||||
|
-- <Precursor>
|
||||||
|
local
|
||||||
|
st: SQLITE_MODIFY_STATEMENT
|
||||||
|
do
|
||||||
|
last_sqlite_result_cursor := Void
|
||||||
|
create st.make (a_sql_statement, sqlite)
|
||||||
|
last_statement := st
|
||||||
|
if st.is_compiled then
|
||||||
|
if a_params /= Void then
|
||||||
|
check st.has_arguments end
|
||||||
|
last_sqlite_result_cursor := st.execute_new_with_arguments (sqlite_arguments (a_params))
|
||||||
|
else
|
||||||
|
last_sqlite_result_cursor := st.execute_new
|
||||||
|
end
|
||||||
|
else
|
||||||
|
error_handler.add_custom_error (1, "invalid query", "query compilation failed!")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
sqlite_arguments (a_params: STRING_TABLE [detachable ANY]): ARRAYED_LIST [SQLITE_BIND_ARG [ANY]]
|
||||||
|
local
|
||||||
|
k: READABLE_STRING_GENERAL
|
||||||
|
k8: STRING
|
||||||
|
do
|
||||||
|
create Result.make (a_params.count)
|
||||||
|
across
|
||||||
|
a_params as ic
|
||||||
|
loop
|
||||||
|
k := ic.key
|
||||||
|
if k.is_valid_as_string_8 then
|
||||||
|
k8 := k.as_string_8
|
||||||
|
else
|
||||||
|
k8 := (create {UTF_CONVERTER}).utf_32_string_to_utf_8_string_8 (k)
|
||||||
|
end
|
||||||
|
if attached {DATE_TIME} ic.item as dt then
|
||||||
|
|
||||||
|
Result.force (new_binding_argument (date_time_to_string (dt), ":" + k8))
|
||||||
|
else
|
||||||
|
Result.force (new_binding_argument (ic.item, ":" + k8))
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
date_time_to_string (dt: DATE_TIME): STRING
|
||||||
|
do
|
||||||
|
create Result.make (16)
|
||||||
|
Result.append_integer (dt.year)
|
||||||
|
Result.append_character ('-')
|
||||||
|
if dt.month <= 9 then
|
||||||
|
Result.append_character ('0')
|
||||||
|
end
|
||||||
|
Result.append_integer (dt.month)
|
||||||
|
Result.append_character ('-')
|
||||||
|
if dt.day <= 9 then
|
||||||
|
Result.append_character ('0')
|
||||||
|
end
|
||||||
|
Result.append_integer (dt.day)
|
||||||
|
Result.append_character (' ')
|
||||||
|
if dt.hour <= 9 then
|
||||||
|
Result.append_character ('0')
|
||||||
|
end
|
||||||
|
Result.append_integer (dt.hour)
|
||||||
|
Result.append_character (':')
|
||||||
|
if dt.minute <= 9 then
|
||||||
|
Result.append_character ('0')
|
||||||
|
end
|
||||||
|
Result.append_integer (dt.minute)
|
||||||
|
Result.append_character (':')
|
||||||
|
if dt.second <= 9 then
|
||||||
|
Result.append_character ('0')
|
||||||
|
end
|
||||||
|
Result.append_integer (dt.second)
|
||||||
|
end
|
||||||
|
|
||||||
|
string_to_date_time (a_string: READABLE_STRING_GENERAL): DATE_TIME
|
||||||
|
local
|
||||||
|
y,m,d: INTEGER
|
||||||
|
h,min,sec: INTEGER
|
||||||
|
s: detachable READABLE_STRING_GENERAL
|
||||||
|
i,j: INTEGER
|
||||||
|
do
|
||||||
|
i := 1
|
||||||
|
-- YYYY
|
||||||
|
j := a_string.index_of ('-', i)
|
||||||
|
s := a_string.substring (i, j - 1)
|
||||||
|
y := s.to_integer
|
||||||
|
i := j + 1
|
||||||
|
-- /MM
|
||||||
|
j := a_string.index_of ('-', i)
|
||||||
|
s := a_string.substring (i, j - 1)
|
||||||
|
m := s.to_integer
|
||||||
|
i := j + 1
|
||||||
|
-- /DD
|
||||||
|
j := a_string.index_of (' ', i)
|
||||||
|
s := a_string.substring (i, j - 1)
|
||||||
|
d := s.to_integer
|
||||||
|
i := j + 1
|
||||||
|
-- %THour
|
||||||
|
j := a_string.index_of (':', i)
|
||||||
|
s := a_string.substring (i, j - 1)
|
||||||
|
h := s.to_integer
|
||||||
|
i := j + 1
|
||||||
|
-- :Min
|
||||||
|
j := a_string.index_of (':', i)
|
||||||
|
s := a_string.substring (i, j - 1)
|
||||||
|
min := s.to_integer
|
||||||
|
i := j + 1
|
||||||
|
-- :Sec
|
||||||
|
j := a_string.count + 1
|
||||||
|
s := a_string.substring (i, j - 1)
|
||||||
|
sec := s.to_integer
|
||||||
|
|
||||||
|
create Result.make (y,m,d,h,min,sec)
|
||||||
|
end
|
||||||
|
|
||||||
|
feature -- Access
|
||||||
|
|
||||||
|
-- sql_rows_count: INTEGER
|
||||||
|
-- -- Number of rows for last sql execution.
|
||||||
|
-- do
|
||||||
|
-- if attached last_sqlite_result_cursor as l_cursor then
|
||||||
|
-- -- FIXME: find better solution!
|
||||||
|
-- from
|
||||||
|
-- Result := 1
|
||||||
|
-- until
|
||||||
|
-- not l_cursor.after
|
||||||
|
-- loop
|
||||||
|
-- Result := Result + 1
|
||||||
|
-- end
|
||||||
|
-- end
|
||||||
|
-- end
|
||||||
|
|
||||||
|
sql_start
|
||||||
|
-- Set the cursor on first element.
|
||||||
|
do
|
||||||
|
-- Already at first position if any ?
|
||||||
|
if attached last_sqlite_result_cursor as l_cursor then
|
||||||
|
-- l_cursor.start
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
sql_after: BOOLEAN
|
||||||
|
-- Are there no more items to iterate over?
|
||||||
|
do
|
||||||
|
if attached last_sqlite_result_cursor as l_cursor then
|
||||||
|
Result := l_cursor.after
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
sql_forth
|
||||||
|
-- Fetch next row from last sql execution, if any.
|
||||||
|
do
|
||||||
|
if attached last_sqlite_result_cursor as l_cursor then
|
||||||
|
l_cursor.forth
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
sql_valid_item_index (a_index: INTEGER): BOOLEAN
|
||||||
|
local
|
||||||
|
l_row: SQLITE_RESULT_ROW
|
||||||
|
do
|
||||||
|
if attached last_sqlite_result_cursor as l_cursor then
|
||||||
|
l_row := l_cursor.item
|
||||||
|
Result := a_index > 0 and a_index.to_natural_32 <= l_row.count
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
sql_item (a_index: INTEGER): detachable ANY
|
||||||
|
local
|
||||||
|
l_row: SQLITE_RESULT_ROW
|
||||||
|
do
|
||||||
|
if attached last_sqlite_result_cursor as l_cursor then
|
||||||
|
l_row := l_cursor.item
|
||||||
|
Result := l_row.value (a_index.to_natural_32)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
sql_read_integer_32 (a_index: INTEGER): INTEGER_32
|
||||||
|
-- Retrieved value at `a_index' position in `item'.
|
||||||
|
local
|
||||||
|
l_item: like sql_item
|
||||||
|
i64: INTEGER_64
|
||||||
|
do
|
||||||
|
l_item := sql_item (a_index)
|
||||||
|
if attached {INTEGER_32} l_item as i then
|
||||||
|
Result := i
|
||||||
|
elseif attached {INTEGER_32_REF} l_item as l_value then
|
||||||
|
Result := l_value.item
|
||||||
|
else
|
||||||
|
if attached {INTEGER_64} l_item as i then
|
||||||
|
i64 := i
|
||||||
|
elseif attached {INTEGER_64_REF} l_item as l_value then
|
||||||
|
i64 := l_value.item
|
||||||
|
else
|
||||||
|
check is_integer_32: False end
|
||||||
|
end
|
||||||
|
if i64 <= {INTEGER_32}.max_value then
|
||||||
|
Result := i64.to_integer_32
|
||||||
|
else
|
||||||
|
check is_integer_32: False end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
sql_read_date_time (a_index: INTEGER): detachable DATE_TIME
|
||||||
|
-- Retrieved value at `a_index' position in `item'.
|
||||||
|
local
|
||||||
|
l_item: like sql_item
|
||||||
|
do
|
||||||
|
l_item := sql_item (a_index)
|
||||||
|
if attached {DATE_TIME} l_item as dt then
|
||||||
|
Result := dt
|
||||||
|
elseif attached {READABLE_STRING_GENERAL} l_item as s then
|
||||||
|
Result := string_to_date_time (s)
|
||||||
|
else
|
||||||
|
check is_date_time_nor_null: l_item = Void end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
feature -- Conversion
|
||||||
|
|
||||||
|
sql_statement (a_statement: STRING): STRING
|
||||||
|
-- <Precursor>.
|
||||||
|
local
|
||||||
|
i: INTEGER
|
||||||
|
do
|
||||||
|
Result := a_statement
|
||||||
|
from
|
||||||
|
i := 1
|
||||||
|
until
|
||||||
|
i = 0
|
||||||
|
loop
|
||||||
|
i := a_statement.substring_index ("AUTO_INCREMENT", i)
|
||||||
|
if i > 0 then
|
||||||
|
if Result = a_statement then
|
||||||
|
create Result.make_from_string (a_statement)
|
||||||
|
end
|
||||||
|
Result.remove (i + 4)
|
||||||
|
i := i + 14
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
@@ -0,0 +1,90 @@
|
|||||||
|
note
|
||||||
|
description: "[
|
||||||
|
Objects that ...
|
||||||
|
]"
|
||||||
|
author: "$Author: jfiat $"
|
||||||
|
date: "$Date: 2015-02-13 13:08:13 +0100 (ven., 13 févr. 2015) $"
|
||||||
|
revision: "$Revision: 96616 $"
|
||||||
|
|
||||||
|
class
|
||||||
|
CMS_STORAGE_SQLITE3_BUILDER
|
||||||
|
|
||||||
|
inherit
|
||||||
|
CMS_STORAGE_SQL_BUILDER
|
||||||
|
|
||||||
|
create
|
||||||
|
make
|
||||||
|
|
||||||
|
feature {NONE} -- Initialization
|
||||||
|
|
||||||
|
make
|
||||||
|
-- Initialize `Current'.
|
||||||
|
do
|
||||||
|
end
|
||||||
|
|
||||||
|
feature -- Factory
|
||||||
|
|
||||||
|
storage (a_setup: CMS_SETUP; a_error_handler: ERROR_HANDLER): detachable CMS_STORAGE_SQLITE3
|
||||||
|
local
|
||||||
|
s: detachable READABLE_STRING_32
|
||||||
|
p: PATH
|
||||||
|
db: detachable SQLITE_DATABASE
|
||||||
|
l_source: SQLITE_FILE_SOURCE
|
||||||
|
i,j: INTEGER
|
||||||
|
do
|
||||||
|
if
|
||||||
|
attached (create {APPLICATION_JSON_CONFIGURATION_HELPER}).new_database_configuration (a_setup.environment.application_config_path) as l_database_config
|
||||||
|
then
|
||||||
|
if l_database_config.driver.is_case_insensitive_equal ("sqlite3") then
|
||||||
|
s := l_database_config.database_string
|
||||||
|
i := s.substring_index ("Database=", 1)
|
||||||
|
if i > 0 then
|
||||||
|
i := s.index_of ('=', i) + 1
|
||||||
|
j := s.index_of (';', i)
|
||||||
|
if j = 0 then
|
||||||
|
j := s.count + 1
|
||||||
|
end
|
||||||
|
create p.make_from_string (s.substring (i, j - 1))
|
||||||
|
else
|
||||||
|
create p.make_from_string (s)
|
||||||
|
end
|
||||||
|
|
||||||
|
if attached reuseable_connection.item as d then
|
||||||
|
if p.same_as (d.path) then
|
||||||
|
db := d.database
|
||||||
|
end
|
||||||
|
end
|
||||||
|
if db = Void or else db.is_closed then
|
||||||
|
create l_source.make (p.name)
|
||||||
|
create db.make (l_source)
|
||||||
|
if l_source.exists then
|
||||||
|
db.open_read_write
|
||||||
|
else
|
||||||
|
db.open_create_read_write
|
||||||
|
end
|
||||||
|
end
|
||||||
|
if not db.is_closed then
|
||||||
|
db.set_busy_timeout (1_000) -- FIXME
|
||||||
|
create Result.make (db)
|
||||||
|
-- set_map_zero_null_value (False) --| This way we map 0 to 0, instead of Null as default.
|
||||||
|
if Result.is_available then
|
||||||
|
if not Result.is_initialized then
|
||||||
|
initialize (a_setup, Result)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
else
|
||||||
|
a_error_handler.add_custom_error (0, "Could not connect to the ODBC storage", Void)
|
||||||
|
end
|
||||||
|
else
|
||||||
|
-- Wrong mapping between storage name and storage builder!
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
reuseable_connection: CELL [detachable TUPLE [path: PATH; database: SQLITE_DATABASE]]
|
||||||
|
once
|
||||||
|
create Result.put (Void)
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
end
|
||||||
@@ -83,11 +83,11 @@ feature -- Persistence
|
|||||||
|
|
||||||
if l_update then
|
if l_update then
|
||||||
if l_has_modif then
|
if l_has_modif then
|
||||||
sql_change (sql_update_node_data, l_parameters)
|
sql_modify (sql_update_node_data, l_parameters)
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
if l_has_modif then
|
if l_has_modif then
|
||||||
sql_change (sql_insert_node_data, l_parameters)
|
sql_insert (sql_insert_node_data, l_parameters)
|
||||||
else
|
else
|
||||||
-- no page data, means everything is empty.
|
-- no page data, means everything is empty.
|
||||||
-- FOR NOW: always record row
|
-- FOR NOW: always record row
|
||||||
@@ -116,7 +116,7 @@ feature -- Persistence
|
|||||||
if a_node.has_id then
|
if a_node.has_id then
|
||||||
create l_parameters.make (1)
|
create l_parameters.make (1)
|
||||||
l_parameters.put (a_node.id, "nid")
|
l_parameters.put (a_node.id, "nid")
|
||||||
sql_change (sql_delete_node_data, l_parameters)
|
sql_modify (sql_delete_node_data, l_parameters)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -136,18 +136,21 @@ feature {NONE} -- Implementation
|
|||||||
l_parameters.put (a_node.revision, "revision")
|
l_parameters.put (a_node.revision, "revision")
|
||||||
sql_query (sql_select_node_data, l_parameters)
|
sql_query (sql_select_node_data, l_parameters)
|
||||||
if not has_error then
|
if not has_error then
|
||||||
n := sql_rows_count
|
if not sql_after then
|
||||||
if n = 1 then
|
|
||||||
-- nid, revision, tags
|
-- nid, revision, tags
|
||||||
l_rev := sql_read_integer_64 (2)
|
l_rev := sql_read_integer_64 (2)
|
||||||
l_tags := sql_read_string_32 (3)
|
l_tags := sql_read_string_32 (3)
|
||||||
if l_tags /= Void then
|
if l_tags /= Void then
|
||||||
Result := [l_rev, l_tags]
|
Result := [l_rev, l_tags]
|
||||||
end
|
end
|
||||||
else
|
sql_forth
|
||||||
check unique_data: n = 0 end
|
if not sql_after then
|
||||||
|
check unique_data: n = 0 end
|
||||||
|
Result := Void
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
sql_finalize
|
||||||
ensure
|
ensure
|
||||||
accepted_revision: Result /= Void implies Result.revision <= a_node.revision
|
accepted_revision: Result /= Void implies Result.revision <= a_node.revision
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -23,9 +23,10 @@ feature -- Access
|
|||||||
error_handler.reset
|
error_handler.reset
|
||||||
write_information_log (generator + ".blogs_count")
|
write_information_log (generator + ".blogs_count")
|
||||||
sql_query (sql_select_blog_count, Void)
|
sql_query (sql_select_blog_count, Void)
|
||||||
if sql_rows_count = 1 then
|
if not has_error and not sql_after then
|
||||||
Result := sql_read_integer_64 (1)
|
Result := sql_read_integer_64 (1)
|
||||||
end
|
end
|
||||||
|
sql_finalize
|
||||||
end
|
end
|
||||||
|
|
||||||
blogs_count_from_user (a_user: CMS_USER) : INTEGER_64
|
blogs_count_from_user (a_user: CMS_USER) : INTEGER_64
|
||||||
@@ -38,9 +39,10 @@ feature -- Access
|
|||||||
create l_parameters.make (2)
|
create l_parameters.make (2)
|
||||||
l_parameters.put (a_user.id, "user")
|
l_parameters.put (a_user.id, "user")
|
||||||
sql_query (sql_select_blog_count_from_user, l_parameters)
|
sql_query (sql_select_blog_count_from_user, l_parameters)
|
||||||
if sql_rows_count = 1 then
|
if not has_error and not sql_after then
|
||||||
Result := sql_read_integer_64 (1)
|
Result := sql_read_integer_64 (1)
|
||||||
end
|
end
|
||||||
|
sql_finalize
|
||||||
end
|
end
|
||||||
|
|
||||||
blogs: LIST [CMS_NODE]
|
blogs: LIST [CMS_NODE]
|
||||||
|
|||||||
@@ -28,9 +28,10 @@ feature -- Access
|
|||||||
error_handler.reset
|
error_handler.reset
|
||||||
write_information_log (generator + ".nodes_count")
|
write_information_log (generator + ".nodes_count")
|
||||||
sql_query (sql_select_nodes_count, Void)
|
sql_query (sql_select_nodes_count, Void)
|
||||||
if sql_rows_count = 1 then
|
if not has_error and not sql_after then
|
||||||
Result := sql_read_natural_64 (1)
|
Result := sql_read_natural_64 (1)
|
||||||
end
|
end
|
||||||
|
sql_finalize
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
@@ -175,9 +176,10 @@ feature -- Access
|
|||||||
create l_parameters.make (1)
|
create l_parameters.make (1)
|
||||||
l_parameters.put (a_id, "nid")
|
l_parameters.put (a_id, "nid")
|
||||||
sql_query (sql_select_node_by_id, l_parameters)
|
sql_query (sql_select_node_by_id, l_parameters)
|
||||||
if sql_rows_count = 1 then
|
if not has_error and not sql_after then
|
||||||
Result := fetch_node
|
Result := fetch_node
|
||||||
end
|
end
|
||||||
|
sql_finalize
|
||||||
end
|
end
|
||||||
|
|
||||||
node_by_id_and_revision (a_node_id, a_revision: INTEGER_64): detachable CMS_NODE
|
node_by_id_and_revision (a_node_id, a_revision: INTEGER_64): detachable CMS_NODE
|
||||||
@@ -191,9 +193,10 @@ feature -- Access
|
|||||||
l_parameters.put (a_node_id, "nid")
|
l_parameters.put (a_node_id, "nid")
|
||||||
l_parameters.put (a_revision, "revision")
|
l_parameters.put (a_revision, "revision")
|
||||||
sql_query (sql_select_node_by_id_and_revision, l_parameters)
|
sql_query (sql_select_node_by_id_and_revision, l_parameters)
|
||||||
if sql_rows_count = 1 then
|
if not has_error and not sql_after then
|
||||||
Result := fetch_node
|
Result := fetch_node
|
||||||
end
|
end
|
||||||
|
sql_finalize
|
||||||
end
|
end
|
||||||
|
|
||||||
node_author (a_node: CMS_NODE): detachable CMS_USER
|
node_author (a_node: CMS_NODE): detachable CMS_USER
|
||||||
@@ -207,9 +210,10 @@ feature -- Access
|
|||||||
l_parameters.put (a_node.id, "nid")
|
l_parameters.put (a_node.id, "nid")
|
||||||
l_parameters.put (a_node.revision, "revision")
|
l_parameters.put (a_node.revision, "revision")
|
||||||
sql_query (Select_user_author, l_parameters)
|
sql_query (Select_user_author, l_parameters)
|
||||||
if sql_rows_count >= 1 then
|
if not has_error and not sql_after then
|
||||||
Result := fetch_author
|
Result := fetch_author
|
||||||
end
|
end
|
||||||
|
sql_finalize
|
||||||
end
|
end
|
||||||
|
|
||||||
last_inserted_node_id: INTEGER_64
|
last_inserted_node_id: INTEGER_64
|
||||||
@@ -218,9 +222,10 @@ feature -- Access
|
|||||||
error_handler.reset
|
error_handler.reset
|
||||||
write_information_log (generator + ".last_inserted_node_id")
|
write_information_log (generator + ".last_inserted_node_id")
|
||||||
sql_query (Sql_last_insert_node_id, Void)
|
sql_query (Sql_last_insert_node_id, Void)
|
||||||
if sql_rows_count = 1 then
|
if not has_error and not sql_after then
|
||||||
Result := sql_read_integer_64 (1)
|
Result := sql_read_integer_64 (1)
|
||||||
end
|
end
|
||||||
|
sql_finalize
|
||||||
end
|
end
|
||||||
|
|
||||||
last_inserted_node_revision (a_node: detachable CMS_NODE): INTEGER_64
|
last_inserted_node_revision (a_node: detachable CMS_NODE): INTEGER_64
|
||||||
@@ -234,11 +239,16 @@ feature -- Access
|
|||||||
create l_parameters.make (1)
|
create l_parameters.make (1)
|
||||||
l_parameters.force (a_node.id, "nid")
|
l_parameters.force (a_node.id, "nid")
|
||||||
sql_query (Sql_last_insert_node_revision_for_nid, l_parameters)
|
sql_query (Sql_last_insert_node_revision_for_nid, l_parameters)
|
||||||
if sql_rows_count = 1 then
|
if not has_error and not sql_after then
|
||||||
if sql_item (1) /= Void then
|
if sql_item (1) /= Void then
|
||||||
Result := sql_read_integer_64 (1)
|
Result := sql_read_integer_64 (1)
|
||||||
end
|
end
|
||||||
|
sql_forth
|
||||||
|
if not sql_after then
|
||||||
|
check no_more_than_one: False end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
sql_finalize
|
||||||
end
|
end
|
||||||
-- if Result = 0 and not has_error then --| include the case a_node = Void
|
-- if Result = 0 and not has_error then --| include the case a_node = Void
|
||||||
-- sql_query (Sql_last_insert_node_revision, Void)
|
-- sql_query (Sql_last_insert_node_revision, Void)
|
||||||
@@ -328,7 +338,7 @@ feature -- Change: Node
|
|||||||
l_parameters.put (create {DATE_TIME}.make_now_utc, "changed")
|
l_parameters.put (create {DATE_TIME}.make_now_utc, "changed")
|
||||||
l_parameters.put ({CMS_NODE_API}.trashed, "status")
|
l_parameters.put ({CMS_NODE_API}.trashed, "status")
|
||||||
l_parameters.put (a_id, "nid")
|
l_parameters.put (a_id, "nid")
|
||||||
sql_change (sql_trash_node, l_parameters)
|
sql_modify (sql_trash_node, l_parameters)
|
||||||
end
|
end
|
||||||
|
|
||||||
delete_node_base (a_node: CMS_NODE)
|
delete_node_base (a_node: CMS_NODE)
|
||||||
@@ -343,11 +353,11 @@ feature -- Change: Node
|
|||||||
error_handler.reset
|
error_handler.reset
|
||||||
create l_parameters.make (1)
|
create l_parameters.make (1)
|
||||||
l_parameters.put (a_node.id, "nid")
|
l_parameters.put (a_node.id, "nid")
|
||||||
sql_change (sql_delete_node, l_parameters)
|
sql_modify (sql_delete_node, l_parameters)
|
||||||
|
|
||||||
-- we remove node_revisions and pages.
|
-- we remove node_revisions and pages.
|
||||||
-- Check: maybe we need a transaction.
|
-- Check: maybe we need a transaction.
|
||||||
sql_change (sql_delete_node_revisions, l_parameters)
|
sql_modify (sql_delete_node_revisions, l_parameters)
|
||||||
|
|
||||||
if not error_handler.has_error then
|
if not error_handler.has_error then
|
||||||
extended_delete (a_node)
|
extended_delete (a_node)
|
||||||
@@ -368,7 +378,7 @@ feature -- Change: Node
|
|||||||
l_parameters.put (l_time, "changed")
|
l_parameters.put (l_time, "changed")
|
||||||
l_parameters.put ({CMS_NODE_API}.not_published, "status")
|
l_parameters.put ({CMS_NODE_API}.not_published, "status")
|
||||||
l_parameters.put (a_id, "nid")
|
l_parameters.put (a_id, "nid")
|
||||||
sql_change (sql_restore_node, l_parameters)
|
sql_modify (sql_restore_node, l_parameters)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
@@ -412,7 +422,7 @@ feature {NONE} -- Implementation
|
|||||||
create l_copy_parameters.make (2)
|
create l_copy_parameters.make (2)
|
||||||
l_copy_parameters.force (a_node.id, "nid")
|
l_copy_parameters.force (a_node.id, "nid")
|
||||||
-- l_copy_parameters.force (l_rev - 1, "revision")
|
-- l_copy_parameters.force (l_rev - 1, "revision")
|
||||||
sql_change (sql_copy_node_to_revision, l_copy_parameters)
|
sql_insert (sql_copy_node_to_revision, l_copy_parameters)
|
||||||
|
|
||||||
if not has_error then
|
if not has_error then
|
||||||
a_node.set_revision (l_rev)
|
a_node.set_revision (l_rev)
|
||||||
@@ -420,7 +430,7 @@ feature {NONE} -- Implementation
|
|||||||
-- Update
|
-- Update
|
||||||
l_parameters.put (a_node.id, "nid")
|
l_parameters.put (a_node.id, "nid")
|
||||||
l_parameters.put (a_node.revision, "revision")
|
l_parameters.put (a_node.revision, "revision")
|
||||||
sql_change (sql_update_node, l_parameters)
|
sql_modify (sql_update_node, l_parameters)
|
||||||
|
|
||||||
if not error_handler.has_error then
|
if not error_handler.has_error then
|
||||||
a_node.set_modification_date (now)
|
a_node.set_modification_date (now)
|
||||||
@@ -431,7 +441,7 @@ feature {NONE} -- Implementation
|
|||||||
l_parameters.put (a_node.creation_date, "created")
|
l_parameters.put (a_node.creation_date, "created")
|
||||||
l_parameters.put (l_rev, "revision")
|
l_parameters.put (l_rev, "revision")
|
||||||
|
|
||||||
sql_change (sql_insert_node, l_parameters)
|
sql_insert (sql_insert_node, l_parameters)
|
||||||
if not error_handler.has_error then
|
if not error_handler.has_error then
|
||||||
a_node.set_modification_date (now)
|
a_node.set_modification_date (now)
|
||||||
a_node.set_id (last_inserted_node_id)
|
a_node.set_id (last_inserted_node_id)
|
||||||
|
|||||||
@@ -73,15 +73,15 @@ feature -- Persistence
|
|||||||
|
|
||||||
if l_update then
|
if l_update then
|
||||||
if l_has_modif then
|
if l_has_modif then
|
||||||
sql_change (sql_update_node_data, l_parameters)
|
sql_modify (sql_update_node_data, l_parameters)
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
if l_has_modif then
|
if l_has_modif then
|
||||||
sql_change (sql_insert_node_data, l_parameters)
|
sql_insert (sql_insert_node_data, l_parameters)
|
||||||
else
|
else
|
||||||
-- no page data, means everything is empty.
|
-- no page data, means everything is empty.
|
||||||
-- FOR NOW: always record row
|
-- FOR NOW: always record row
|
||||||
sql_change (sql_insert_node_data, l_parameters)
|
sql_insert (sql_insert_node_data, l_parameters)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -121,7 +121,7 @@ feature -- Persistence
|
|||||||
if a_node.has_id then
|
if a_node.has_id then
|
||||||
create l_parameters.make (1)
|
create l_parameters.make (1)
|
||||||
l_parameters.put (a_node.id, "nid")
|
l_parameters.put (a_node.id, "nid")
|
||||||
sql_change (sql_delete_node_data, l_parameters)
|
sql_modify (sql_delete_node_data, l_parameters)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -139,10 +139,14 @@ feature {NONE} -- Implementation
|
|||||||
l_parameters.put (a_node.revision, "revision")
|
l_parameters.put (a_node.revision, "revision")
|
||||||
sql_query (sql_select_node_data, l_parameters)
|
sql_query (sql_select_node_data, l_parameters)
|
||||||
if not has_error then
|
if not has_error then
|
||||||
n := sql_rows_count
|
if not sql_after then
|
||||||
if n = 1 then
|
|
||||||
-- nid, revision, parent
|
-- nid, revision, parent
|
||||||
Result := [sql_read_integer_64 (2), sql_read_integer_64 (3)]
|
Result := [sql_read_integer_64 (2), sql_read_integer_64 (3)]
|
||||||
|
sql_forth
|
||||||
|
if not sql_after then
|
||||||
|
check unique_data: n = 0 end
|
||||||
|
Result := Void
|
||||||
|
end
|
||||||
else
|
else
|
||||||
check unique_data: n = 0 end
|
check unique_data: n = 0 end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -53,11 +53,15 @@ feature -- Access User Outh
|
|||||||
create l_string.make_from_string (select_user_oauth2_template_by_id)
|
create l_string.make_from_string (select_user_oauth2_template_by_id)
|
||||||
l_string.replace_substring_all ("$table_name", oauth2_sql_table_name (a_consumer))
|
l_string.replace_substring_all ("$table_name", oauth2_sql_table_name (a_consumer))
|
||||||
sql_query (l_string, l_parameters)
|
sql_query (l_string, l_parameters)
|
||||||
if sql_rows_count = 1 then
|
if not has_error and not sql_after then
|
||||||
Result := fetch_user
|
Result := fetch_user
|
||||||
else
|
sql_forth
|
||||||
check no_more_than_one: sql_rows_count = 0 end
|
if not sql_after then
|
||||||
|
check no_more_than_one: False end
|
||||||
|
Result := Void
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
sql_finalize
|
||||||
end
|
end
|
||||||
|
|
||||||
user_oauth2_by_email (a_email: like {CMS_USER}.email; a_consumer: READABLE_STRING_GENERAL): detachable CMS_USER
|
user_oauth2_by_email (a_email: like {CMS_USER}.email; a_consumer: READABLE_STRING_GENERAL): detachable CMS_USER
|
||||||
@@ -73,11 +77,15 @@ feature -- Access User Outh
|
|||||||
create l_string.make_from_string (select_user_oauth2_template_by_email)
|
create l_string.make_from_string (select_user_oauth2_template_by_email)
|
||||||
l_string.replace_substring_all ("$table_name", oauth2_sql_table_name (a_consumer))
|
l_string.replace_substring_all ("$table_name", oauth2_sql_table_name (a_consumer))
|
||||||
sql_query (l_string, l_parameters)
|
sql_query (l_string, l_parameters)
|
||||||
if sql_rows_count = 1 then
|
if not has_error and not sql_after then
|
||||||
Result := fetch_user
|
Result := fetch_user
|
||||||
else
|
sql_forth
|
||||||
check no_more_than_one: sql_rows_count = 0 end
|
if not sql_after then
|
||||||
|
check no_more_than_one: False end
|
||||||
|
Result := Void
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
sql_finalize
|
||||||
end
|
end
|
||||||
|
|
||||||
user_oauth2_by_token (a_token: READABLE_STRING_GENERAL; a_consumer: READABLE_STRING_GENERAL): detachable CMS_USER
|
user_oauth2_by_token (a_token: READABLE_STRING_GENERAL; a_consumer: READABLE_STRING_GENERAL): detachable CMS_USER
|
||||||
@@ -93,11 +101,15 @@ feature -- Access User Outh
|
|||||||
create l_string.make_from_string (select_user_by_oauth2_template_token)
|
create l_string.make_from_string (select_user_by_oauth2_template_token)
|
||||||
l_string.replace_substring_all ("$table_name", oauth2_sql_table_name (a_consumer))
|
l_string.replace_substring_all ("$table_name", oauth2_sql_table_name (a_consumer))
|
||||||
sql_query (l_string, l_parameters)
|
sql_query (l_string, l_parameters)
|
||||||
if sql_rows_count = 1 then
|
if not has_error and not sql_after then
|
||||||
Result := fetch_user
|
Result := fetch_user
|
||||||
else
|
sql_forth
|
||||||
check no_more_than_one: sql_rows_count = 0 end
|
if not sql_after then
|
||||||
|
check no_more_than_one: False end
|
||||||
|
Result := Void
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
sql_finalize
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
@@ -134,11 +146,15 @@ feature --Access: Consumers
|
|||||||
create l_parameters.make (1)
|
create l_parameters.make (1)
|
||||||
l_parameters.put (a_name, "name")
|
l_parameters.put (a_name, "name")
|
||||||
sql_query (sql_oauth_consumer_name, l_parameters)
|
sql_query (sql_oauth_consumer_name, l_parameters)
|
||||||
if sql_rows_count = 1 then
|
if not has_error and not sql_after then
|
||||||
Result := fetch_consumer
|
Result := fetch_consumer
|
||||||
else
|
sql_forth
|
||||||
check no_more_than_one: sql_rows_count = 0 end
|
if not sql_after then
|
||||||
|
check no_more_than_one: False end
|
||||||
|
Result := Void
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
sql_finalize
|
||||||
end
|
end
|
||||||
|
|
||||||
oauth_consumer_by_callback (a_callback: READABLE_STRING_8): detachable CMS_OAUTH_20_CONSUMER
|
oauth_consumer_by_callback (a_callback: READABLE_STRING_8): detachable CMS_OAUTH_20_CONSUMER
|
||||||
@@ -151,11 +167,15 @@ feature --Access: Consumers
|
|||||||
create l_parameters.make (1)
|
create l_parameters.make (1)
|
||||||
l_parameters.put (a_callback, "name")
|
l_parameters.put (a_callback, "name")
|
||||||
sql_query (sql_oauth_consumer_callback, l_parameters)
|
sql_query (sql_oauth_consumer_callback, l_parameters)
|
||||||
if sql_rows_count = 1 then
|
if not has_error and not sql_after then
|
||||||
Result := fetch_consumer
|
Result := fetch_consumer
|
||||||
else
|
sql_forth
|
||||||
check no_more_than_one: sql_rows_count = 0 end
|
if not sql_after then
|
||||||
|
check no_more_than_one: False end
|
||||||
|
Result := Void
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
sql_finalize
|
||||||
end
|
end
|
||||||
|
|
||||||
feature -- Change: User OAuth
|
feature -- Change: User OAuth
|
||||||
@@ -181,7 +201,7 @@ feature -- Change: User OAuth
|
|||||||
|
|
||||||
create l_string.make_from_string (sql_insert_oauth2_template)
|
create l_string.make_from_string (sql_insert_oauth2_template)
|
||||||
l_string.replace_substring_all ("$table_name", oauth2_sql_table_name (a_consumer))
|
l_string.replace_substring_all ("$table_name", oauth2_sql_table_name (a_consumer))
|
||||||
sql_change (l_string, l_parameters)
|
sql_insert (l_string, l_parameters)
|
||||||
sql_commit_transaction
|
sql_commit_transaction
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -202,7 +222,7 @@ feature -- Change: User OAuth
|
|||||||
|
|
||||||
create l_string.make_from_string (sql_update_oauth2_template)
|
create l_string.make_from_string (sql_update_oauth2_template)
|
||||||
l_string.replace_substring_all ("$table_name", oauth2_sql_table_name (a_consumer))
|
l_string.replace_substring_all ("$table_name", oauth2_sql_table_name (a_consumer))
|
||||||
sql_change (l_string, l_parameters)
|
sql_modify (l_string, l_parameters)
|
||||||
sql_commit_transaction
|
sql_commit_transaction
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -221,7 +241,7 @@ feature -- Change: User OAuth
|
|||||||
|
|
||||||
create l_string.make_from_string (sql_remove_oauth2_template)
|
create l_string.make_from_string (sql_remove_oauth2_template)
|
||||||
l_string.replace_substring_all ("$table_name", oauth2_sql_table_name (a_consumer))
|
l_string.replace_substring_all ("$table_name", oauth2_sql_table_name (a_consumer))
|
||||||
sql_change (l_string, l_parameters)
|
sql_modify (l_string, l_parameters)
|
||||||
sql_commit_transaction
|
sql_commit_transaction
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -342,7 +362,7 @@ feature {NONE} -- User OAuth2
|
|||||||
|
|
||||||
Sql_remove_oauth2_template: STRING = "DELETE FROM $table_name WHERE uid =:uid;"
|
Sql_remove_oauth2_template: STRING = "DELETE FROM $table_name WHERE uid =:uid;"
|
||||||
|
|
||||||
Sql_oauth_consumers: STRING = "SELECT name FROM oauth2_consumers";
|
Sql_oauth_consumers: STRING = "SELECT name FROM oauth2_consumers;"
|
||||||
|
|
||||||
Sql_oauth2_table_prefix: STRING = "oauth2_"
|
Sql_oauth2_table_prefix: STRING = "oauth2_"
|
||||||
|
|
||||||
|
|||||||
@@ -33,11 +33,15 @@ feature -- Access User Outh
|
|||||||
l_parameters.put (a_uid, "uid")
|
l_parameters.put (a_uid, "uid")
|
||||||
l_parameters.put (a_identity, "identity")
|
l_parameters.put (a_identity, "identity")
|
||||||
sql_query (Select_user_openid_by_id, l_parameters)
|
sql_query (Select_user_openid_by_id, l_parameters)
|
||||||
if sql_rows_count = 1 then
|
if not has_error and not sql_after then
|
||||||
Result := fetch_user
|
Result := fetch_user
|
||||||
else
|
sql_forth
|
||||||
check no_more_than_one: sql_rows_count = 0 end
|
if not sql_after then
|
||||||
|
check no_more_than_one: False end
|
||||||
|
Result := Void
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
sql_finalize
|
||||||
end
|
end
|
||||||
|
|
||||||
user_openid_by_identity (a_identity: READABLE_STRING_GENERAL): detachable CMS_USER
|
user_openid_by_identity (a_identity: READABLE_STRING_GENERAL): detachable CMS_USER
|
||||||
@@ -50,10 +54,15 @@ feature -- Access User Outh
|
|||||||
create l_parameters.make (1)
|
create l_parameters.make (1)
|
||||||
l_parameters.put (a_identity, "identity")
|
l_parameters.put (a_identity, "identity")
|
||||||
sql_query (Select_user_by_openid_identity, l_parameters)
|
sql_query (Select_user_by_openid_identity, l_parameters)
|
||||||
if sql_rows_count = 1 then
|
if not has_error and not sql_after then
|
||||||
Result := fetch_user
|
Result := fetch_user
|
||||||
|
sql_forth
|
||||||
|
if not sql_after then
|
||||||
|
check no_more_than_one: False end
|
||||||
|
Result := Void
|
||||||
|
end
|
||||||
else
|
else
|
||||||
check no_more_than_one: sql_rows_count = 0 end
|
check no_more_than_one: False end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -91,11 +100,14 @@ feature --Access: Consumers
|
|||||||
create l_parameters.make (1)
|
create l_parameters.make (1)
|
||||||
l_parameters.put (a_name, "name")
|
l_parameters.put (a_name, "name")
|
||||||
sql_query (sql_openid_consumer_name, l_parameters)
|
sql_query (sql_openid_consumer_name, l_parameters)
|
||||||
if sql_rows_count = 1 then
|
if not has_error and not sql_after then
|
||||||
Result := fetch_consumer
|
Result := fetch_consumer
|
||||||
else
|
sql_forth
|
||||||
check no_more_than_one: sql_rows_count = 0 end
|
if not sql_after then
|
||||||
|
check no_more_than_one: False end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
sql_finalize
|
||||||
end
|
end
|
||||||
|
|
||||||
feature -- Change: User OAuth
|
feature -- Change: User OAuth
|
||||||
@@ -114,7 +126,7 @@ feature -- Change: User OAuth
|
|||||||
l_parameters.put (a_user.id, "uid")
|
l_parameters.put (a_user.id, "uid")
|
||||||
l_parameters.put (a_identity, "identity")
|
l_parameters.put (a_identity, "identity")
|
||||||
l_parameters.put (create {DATE_TIME}.make_now_utc, "utc_date")
|
l_parameters.put (create {DATE_TIME}.make_now_utc, "utc_date")
|
||||||
sql_change (Sql_insert_openid, l_parameters)
|
sql_insert (Sql_insert_openid, l_parameters)
|
||||||
sql_commit_transaction
|
sql_commit_transaction
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@@ -37,7 +37,7 @@ feature -- URL aliases
|
|||||||
error_handler.add_custom_error (0, "alias exists", "Path alias %"" + a_alias + "%" already exists!")
|
error_handler.add_custom_error (0, "alias exists", "Path alias %"" + a_alias + "%" already exists!")
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
sql_change (sql_insert_path_alias, l_parameters)
|
sql_insert (sql_insert_path_alias, l_parameters)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -63,7 +63,7 @@ feature -- URL aliases
|
|||||||
l_parameters.put (l_previous_alias, "old")
|
l_parameters.put (l_previous_alias, "old")
|
||||||
l_parameters.put (a_alias, "alias")
|
l_parameters.put (a_alias, "alias")
|
||||||
|
|
||||||
sql_change (sql_update_path_alias, l_parameters)
|
sql_modify (sql_update_path_alias, l_parameters)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -79,7 +79,7 @@ feature -- URL aliases
|
|||||||
-- Found
|
-- Found
|
||||||
create l_parameters.make (1)
|
create l_parameters.make (1)
|
||||||
l_parameters.put (a_alias, "alias")
|
l_parameters.put (a_alias, "alias")
|
||||||
sql_change (sql_delete_path_alias, l_parameters)
|
sql_modify (sql_delete_path_alias, l_parameters)
|
||||||
else
|
else
|
||||||
error_handler.add_custom_error (0, "alias mismatch", "Path alias %"" + a_alias + "%" is not related to source %"" + a_source + "%"!")
|
error_handler.add_custom_error (0, "alias mismatch", "Path alias %"" + a_alias + "%" is not related to source %"" + a_source + "%"!")
|
||||||
end
|
end
|
||||||
@@ -97,11 +97,12 @@ feature -- URL aliases
|
|||||||
create l_parameters.make (1)
|
create l_parameters.make (1)
|
||||||
l_parameters.put (a_source, "source")
|
l_parameters.put (a_source, "source")
|
||||||
sql_query (sql_select_path_source, l_parameters)
|
sql_query (sql_select_path_source, l_parameters)
|
||||||
if not has_error then
|
if not has_error and not sql_after then
|
||||||
if sql_rows_count = 1 then
|
Result := sql_read_string (1)
|
||||||
Result := sql_read_string (1)
|
sql_forth
|
||||||
end
|
check one_row: sql_after end
|
||||||
end
|
end
|
||||||
|
sql_finalize
|
||||||
end
|
end
|
||||||
|
|
||||||
source_of_path_alias (a_alias: READABLE_STRING_8): detachable READABLE_STRING_8
|
source_of_path_alias (a_alias: READABLE_STRING_8): detachable READABLE_STRING_8
|
||||||
@@ -114,10 +115,13 @@ feature -- URL aliases
|
|||||||
l_parameters.put (a_alias, "alias")
|
l_parameters.put (a_alias, "alias")
|
||||||
sql_query (sql_select_path_alias, l_parameters)
|
sql_query (sql_select_path_alias, l_parameters)
|
||||||
if not has_error then
|
if not has_error then
|
||||||
if sql_rows_count = 1 then
|
if not has_error and not sql_after then
|
||||||
Result := sql_read_string (1)
|
Result := sql_read_string (1)
|
||||||
|
sql_forth
|
||||||
|
check one_row: sql_after end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
sql_finalize
|
||||||
end
|
end
|
||||||
|
|
||||||
sql_select_path_alias: STRING = "SELECT source FROM path_aliases WHERE alias=:alias ;"
|
sql_select_path_alias: STRING = "SELECT source FROM path_aliases WHERE alias=:alias ;"
|
||||||
@@ -166,7 +170,7 @@ feature -- Logs
|
|||||||
l_parameters.put (Void, "link")
|
l_parameters.put (Void, "link")
|
||||||
end
|
end
|
||||||
l_parameters.put (now, "date")
|
l_parameters.put (now, "date")
|
||||||
sql_change (sql_insert_log, l_parameters)
|
sql_insert (sql_insert_log, l_parameters)
|
||||||
end
|
end
|
||||||
|
|
||||||
sql_insert_log: STRING = "INSERT INTO logs (category, level, uid, message, info, link, date) VALUES (:category, :level, :uid, :message, :info, :link, :date);"
|
sql_insert_log: STRING = "INSERT INTO logs (category, level, uid, message, info, link, date) VALUES (:category, :level, :uid, :message, :info, :link, :date);"
|
||||||
@@ -193,10 +197,10 @@ feature -- Misc
|
|||||||
if a_value.same_string (l_value) then
|
if a_value.same_string (l_value) then
|
||||||
-- already up to date
|
-- already up to date
|
||||||
else
|
else
|
||||||
sql_change (sql_update_custom_value, l_parameters)
|
sql_modify (sql_update_custom_value, l_parameters)
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
sql_change (sql_insert_custom_value, l_parameters)
|
sql_insert (sql_insert_custom_value, l_parameters)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -214,7 +218,7 @@ feature -- Misc
|
|||||||
l_parameters.put (a_type, "default")
|
l_parameters.put (a_type, "default")
|
||||||
end
|
end
|
||||||
l_parameters.put (a_name, "name")
|
l_parameters.put (a_name, "name")
|
||||||
sql_change (sql_delete_custom_value, l_parameters)
|
sql_modify (sql_delete_custom_value, l_parameters)
|
||||||
end
|
end
|
||||||
|
|
||||||
custom_value (a_name: READABLE_STRING_GENERAL; a_type: detachable READABLE_STRING_8): detachable READABLE_STRING_32
|
custom_value (a_name: READABLE_STRING_GENERAL; a_type: detachable READABLE_STRING_8): detachable READABLE_STRING_32
|
||||||
@@ -232,11 +236,12 @@ feature -- Misc
|
|||||||
end
|
end
|
||||||
l_parameters.put (a_name, "name")
|
l_parameters.put (a_name, "name")
|
||||||
sql_query (sql_select_custom_value, l_parameters)
|
sql_query (sql_select_custom_value, l_parameters)
|
||||||
if not has_error then
|
if not has_error and not sql_after then
|
||||||
if sql_rows_count = 1 then
|
Result := sql_read_string_32 (1)
|
||||||
Result := sql_read_string_32 (1)
|
sql_forth
|
||||||
end
|
check one_row: sql_after end
|
||||||
end
|
end
|
||||||
|
sql_finalize
|
||||||
end
|
end
|
||||||
|
|
||||||
sql_select_custom_value: STRING = "SELECT value FROM custom_values WHERE type=:type AND name=:name;"
|
sql_select_custom_value: STRING = "SELECT value FROM custom_values WHERE type=:type AND name=:name;"
|
||||||
@@ -252,4 +257,7 @@ feature -- Misc
|
|||||||
-- SQL delete custom value;
|
-- SQL delete custom value;
|
||||||
|
|
||||||
|
|
||||||
|
note
|
||||||
|
copyright: "2011-2015, Jocelyn Fiat, Javier Velilla, Eiffel Software and others"
|
||||||
|
license: "Eiffel Forum License v2 (see http://www.eiffel.com/licensing/forum.txt)"
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -68,19 +68,24 @@ feature -- Operation
|
|||||||
sql_storage.sql_query (a_sql_statement, a_params)
|
sql_storage.sql_query (a_sql_statement, a_params)
|
||||||
end
|
end
|
||||||
|
|
||||||
sql_change (a_sql_statement: STRING; a_params: detachable STRING_TABLE [detachable ANY])
|
sql_finalize
|
||||||
|
-- Finalize sql query (i.e destroy previous query statement.
|
||||||
do
|
do
|
||||||
sql_storage.sql_change (a_sql_statement, a_params)
|
sql_storage.sql_finalize
|
||||||
|
end
|
||||||
|
|
||||||
|
sql_insert (a_sql_statement: STRING; a_params: detachable STRING_TABLE [detachable ANY])
|
||||||
|
do
|
||||||
|
sql_storage.sql_insert (a_sql_statement, a_params)
|
||||||
|
end
|
||||||
|
|
||||||
|
sql_modify (a_sql_statement: STRING; a_params: detachable STRING_TABLE [detachable ANY])
|
||||||
|
do
|
||||||
|
sql_storage.sql_modify (a_sql_statement, a_params)
|
||||||
end
|
end
|
||||||
|
|
||||||
feature -- Access
|
feature -- Access
|
||||||
|
|
||||||
sql_rows_count: INTEGER
|
|
||||||
-- Number of rows for last sql execution.
|
|
||||||
do
|
|
||||||
Result := sql_storage.sql_rows_count
|
|
||||||
end
|
|
||||||
|
|
||||||
sql_start
|
sql_start
|
||||||
-- Set the cursor on first element.
|
-- Set the cursor on first element.
|
||||||
do
|
do
|
||||||
@@ -109,6 +114,16 @@ feature -- Access
|
|||||||
Result:= sql_storage.sql_item (a_index)
|
Result:= sql_storage.sql_item (a_index)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
sql_read_integer_32 (a_index: INTEGER_32): INTEGER_32
|
||||||
|
do
|
||||||
|
Result := sql_storage.sql_read_integer_32 (a_index)
|
||||||
|
end
|
||||||
|
|
||||||
|
sql_read_date_time (a_index: INTEGER_32): detachable DATE_TIME
|
||||||
|
do
|
||||||
|
Result := sql_storage.sql_read_date_time (a_index)
|
||||||
|
end
|
||||||
|
|
||||||
feature -- Conversion
|
feature -- Conversion
|
||||||
|
|
||||||
sql_statement (a_statement: STRING): STRING
|
sql_statement (a_statement: STRING): STRING
|
||||||
@@ -117,4 +132,7 @@ feature -- Conversion
|
|||||||
Result := sql_storage.sql_statement (a_statement)
|
Result := sql_storage.sql_statement (a_statement)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
note
|
||||||
|
copyright: "2011-2015, Jocelyn Fiat, Javier Velilla, Eiffel Software and others"
|
||||||
|
license: "Eiffel Forum License v2 (see http://www.eiffel.com/licensing/forum.txt)"
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -119,12 +119,22 @@ feature -- Operation
|
|||||||
end
|
end
|
||||||
|
|
||||||
sql_query (a_sql_statement: STRING; a_params: detachable STRING_TABLE [detachable ANY])
|
sql_query (a_sql_statement: STRING; a_params: detachable STRING_TABLE [detachable ANY])
|
||||||
-- <Precursor>
|
-- Execute sql query `a_sql_statement' with optional parameters `a_params'.
|
||||||
deferred
|
deferred
|
||||||
end
|
end
|
||||||
|
|
||||||
sql_change (a_sql_statement: STRING; a_params: detachable STRING_TABLE [detachable ANY])
|
sql_finalize
|
||||||
-- <Precursor>
|
-- Finalize sql query (i.e destroy previous query statement.
|
||||||
|
deferred
|
||||||
|
end
|
||||||
|
|
||||||
|
sql_insert (a_sql_statement: STRING; a_params: detachable STRING_TABLE [detachable ANY])
|
||||||
|
-- Execute sql insert `a_sql_statement' with optional parameters `a_params'.
|
||||||
|
deferred
|
||||||
|
end
|
||||||
|
|
||||||
|
sql_modify (a_sql_statement: STRING; a_params: detachable STRING_TABLE [detachable ANY])
|
||||||
|
-- Execute sql modify `a_sql_statement' with optional parameters `a_params'.
|
||||||
deferred
|
deferred
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -179,7 +189,11 @@ feature -- Helper
|
|||||||
loop
|
loop
|
||||||
if attached next_sql_statement (a_sql_script, i, cl) as s then
|
if attached next_sql_statement (a_sql_script, i, cl) as s then
|
||||||
if not s.is_whitespace then
|
if not s.is_whitespace then
|
||||||
sql_change (sql_statement (s), a_params)
|
if s.starts_with ("INSERT") then
|
||||||
|
sql_insert (sql_statement (s), a_params)
|
||||||
|
else
|
||||||
|
sql_modify (sql_statement (s), a_params)
|
||||||
|
end
|
||||||
err := err or has_error
|
err := err or has_error
|
||||||
reset_error
|
reset_error
|
||||||
end
|
end
|
||||||
@@ -217,11 +231,6 @@ feature -- Helper
|
|||||||
|
|
||||||
feature -- Access
|
feature -- Access
|
||||||
|
|
||||||
sql_rows_count: INTEGER
|
|
||||||
-- Number of rows for last sql execution.
|
|
||||||
deferred
|
|
||||||
end
|
|
||||||
|
|
||||||
sql_start
|
sql_start
|
||||||
-- Set the cursor on first element.
|
-- Set the cursor on first element.
|
||||||
deferred
|
deferred
|
||||||
@@ -279,17 +288,7 @@ feature -- Access
|
|||||||
|
|
||||||
sql_read_integer_32 (a_index: INTEGER): INTEGER_32
|
sql_read_integer_32 (a_index: INTEGER): INTEGER_32
|
||||||
-- Retrieved value at `a_index' position in `item'.
|
-- Retrieved value at `a_index' position in `item'.
|
||||||
local
|
deferred
|
||||||
l_item: like sql_item
|
|
||||||
do
|
|
||||||
l_item := sql_item (a_index)
|
|
||||||
if attached {INTEGER_32} l_item as i then
|
|
||||||
Result := i
|
|
||||||
elseif attached {INTEGER_32_REF} l_item as l_value then
|
|
||||||
Result := l_value.item
|
|
||||||
else
|
|
||||||
check is_integer_32: False end
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
sql_read_string (a_index: INTEGER): detachable STRING
|
sql_read_string (a_index: INTEGER): detachable STRING
|
||||||
@@ -329,15 +328,7 @@ feature -- Access
|
|||||||
|
|
||||||
sql_read_date_time (a_index: INTEGER): detachable DATE_TIME
|
sql_read_date_time (a_index: INTEGER): detachable DATE_TIME
|
||||||
-- Retrieved value at `a_index' position in `item'.
|
-- Retrieved value at `a_index' position in `item'.
|
||||||
local
|
deferred
|
||||||
l_item: like sql_item
|
|
||||||
do
|
|
||||||
l_item := sql_item (a_index)
|
|
||||||
if attached {DATE_TIME} l_item as dt then
|
|
||||||
Result := dt
|
|
||||||
else
|
|
||||||
check is_date_time_nor_null: l_item = Void end
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
sql_read_boolean (a_index: INTEGER): detachable BOOLEAN
|
sql_read_boolean (a_index: INTEGER): detachable BOOLEAN
|
||||||
|
|||||||
@@ -30,10 +30,12 @@ feature -- Access: user
|
|||||||
write_information_log (generator + ".user_count")
|
write_information_log (generator + ".user_count")
|
||||||
|
|
||||||
sql_query (select_users_count, Void)
|
sql_query (select_users_count, Void)
|
||||||
if sql_rows_count = 1 then
|
if not has_error and then not sql_after then
|
||||||
Result := sql_read_integer_32 (1)
|
Result := sql_read_integer_64 (1).to_integer_32
|
||||||
|
sql_forth
|
||||||
|
check one_row: sql_after end
|
||||||
end
|
end
|
||||||
error_handler.reset
|
sql_finalize
|
||||||
end
|
end
|
||||||
|
|
||||||
users: LIST [CMS_USER]
|
users: LIST [CMS_USER]
|
||||||
@@ -47,13 +49,14 @@ feature -- Access: user
|
|||||||
sql_query (select_users, Void)
|
sql_query (select_users, Void)
|
||||||
sql_start
|
sql_start
|
||||||
until
|
until
|
||||||
sql_after
|
sql_after or has_error
|
||||||
loop
|
loop
|
||||||
if attached fetch_user as l_user then
|
if attached fetch_user as l_user then
|
||||||
Result.force (l_user)
|
Result.force (l_user)
|
||||||
end
|
end
|
||||||
sql_forth
|
sql_forth
|
||||||
end
|
end
|
||||||
|
sql_finalize
|
||||||
end
|
end
|
||||||
|
|
||||||
user_by_id (a_id: like {CMS_USER}.id): detachable CMS_USER
|
user_by_id (a_id: like {CMS_USER}.id): detachable CMS_USER
|
||||||
@@ -66,11 +69,12 @@ feature -- Access: user
|
|||||||
create l_parameters.make (1)
|
create l_parameters.make (1)
|
||||||
l_parameters.put (a_id, "uid")
|
l_parameters.put (a_id, "uid")
|
||||||
sql_query (select_user_by_id, l_parameters)
|
sql_query (select_user_by_id, l_parameters)
|
||||||
if sql_rows_count = 1 then
|
if not has_error and not sql_after then
|
||||||
Result := fetch_user
|
Result := fetch_user
|
||||||
else
|
sql_forth
|
||||||
check no_more_than_one: sql_rows_count = 0 end
|
check one_row: sql_after end
|
||||||
end
|
end
|
||||||
|
sql_finalize
|
||||||
end
|
end
|
||||||
|
|
||||||
user_by_name (a_name: like {CMS_USER}.name): detachable CMS_USER
|
user_by_name (a_name: like {CMS_USER}.name): detachable CMS_USER
|
||||||
@@ -83,11 +87,12 @@ feature -- Access: user
|
|||||||
create l_parameters.make (1)
|
create l_parameters.make (1)
|
||||||
l_parameters.put (a_name, "name")
|
l_parameters.put (a_name, "name")
|
||||||
sql_query (select_user_by_name, l_parameters)
|
sql_query (select_user_by_name, l_parameters)
|
||||||
if sql_rows_count = 1 then
|
if not sql_after then
|
||||||
Result := fetch_user
|
Result := fetch_user
|
||||||
else
|
sql_forth
|
||||||
check no_more_than_one: sql_rows_count = 0 end
|
check one_row: sql_after end
|
||||||
end
|
end
|
||||||
|
sql_finalize
|
||||||
end
|
end
|
||||||
|
|
||||||
user_by_email (a_email: like {CMS_USER}.email): detachable CMS_USER
|
user_by_email (a_email: like {CMS_USER}.email): detachable CMS_USER
|
||||||
@@ -100,11 +105,12 @@ feature -- Access: user
|
|||||||
create l_parameters.make (1)
|
create l_parameters.make (1)
|
||||||
l_parameters.put (a_email, "email")
|
l_parameters.put (a_email, "email")
|
||||||
sql_query (select_user_by_email, l_parameters)
|
sql_query (select_user_by_email, l_parameters)
|
||||||
if sql_rows_count = 1 then
|
if not sql_after then
|
||||||
Result := fetch_user
|
Result := fetch_user
|
||||||
else
|
sql_forth
|
||||||
check no_more_than_one: sql_rows_count = 0 end
|
check one_row: sql_after end
|
||||||
end
|
end
|
||||||
|
sql_finalize
|
||||||
end
|
end
|
||||||
|
|
||||||
user_by_activation_token (a_token: READABLE_STRING_32): detachable CMS_USER
|
user_by_activation_token (a_token: READABLE_STRING_32): detachable CMS_USER
|
||||||
@@ -117,11 +123,12 @@ feature -- Access: user
|
|||||||
create l_parameters.make (1)
|
create l_parameters.make (1)
|
||||||
l_parameters.put (a_token, "token")
|
l_parameters.put (a_token, "token")
|
||||||
sql_query (select_user_by_activation_token, l_parameters)
|
sql_query (select_user_by_activation_token, l_parameters)
|
||||||
if sql_rows_count = 1 then
|
if not sql_after then
|
||||||
Result := fetch_user
|
Result := fetch_user
|
||||||
else
|
sql_forth
|
||||||
check no_more_than_one: sql_rows_count = 0 end
|
check one_row: sql_after end
|
||||||
end
|
end
|
||||||
|
sql_finalize
|
||||||
end
|
end
|
||||||
|
|
||||||
user_by_password_token (a_token: READABLE_STRING_32): detachable CMS_USER
|
user_by_password_token (a_token: READABLE_STRING_32): detachable CMS_USER
|
||||||
@@ -134,11 +141,12 @@ feature -- Access: user
|
|||||||
create l_parameters.make (1)
|
create l_parameters.make (1)
|
||||||
l_parameters.put (a_token, "token")
|
l_parameters.put (a_token, "token")
|
||||||
sql_query (select_user_by_password_token, l_parameters)
|
sql_query (select_user_by_password_token, l_parameters)
|
||||||
if sql_rows_count = 1 then
|
if not sql_after then
|
||||||
Result := fetch_user
|
Result := fetch_user
|
||||||
else
|
sql_forth
|
||||||
check no_more_than_one: sql_rows_count = 0 end
|
check one_row: sql_after end
|
||||||
end
|
end
|
||||||
|
sql_finalize
|
||||||
end
|
end
|
||||||
|
|
||||||
is_valid_credential (l_auth_login, l_auth_password: READABLE_STRING_32): BOOLEAN
|
is_valid_credential (l_auth_login, l_auth_password: READABLE_STRING_32): BOOLEAN
|
||||||
@@ -160,7 +168,6 @@ feature -- Access: user
|
|||||||
write_information_log (generator + ".is_valid_credential User:" + l_auth_login + "does not exist" )
|
write_information_log (generator + ".is_valid_credential User:" + l_auth_login + "does not exist" )
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
recent_users (a_lower: INTEGER; a_count: INTEGER): LIST [CMS_USER]
|
recent_users (a_lower: INTEGER; a_count: INTEGER): LIST [CMS_USER]
|
||||||
@@ -187,6 +194,7 @@ feature -- Access: user
|
|||||||
end
|
end
|
||||||
sql_forth
|
sql_forth
|
||||||
end
|
end
|
||||||
|
sql_finalize
|
||||||
end
|
end
|
||||||
feature -- Change: user
|
feature -- Change: user
|
||||||
|
|
||||||
@@ -216,7 +224,7 @@ feature -- Change: user
|
|||||||
l_parameters.put (create {DATE_TIME}.make_now_utc, "created")
|
l_parameters.put (create {DATE_TIME}.make_now_utc, "created")
|
||||||
l_parameters.put (a_user.status, "status")
|
l_parameters.put (a_user.status, "status")
|
||||||
|
|
||||||
sql_change (sql_insert_user, l_parameters)
|
sql_insert (sql_insert_user, l_parameters)
|
||||||
if not error_handler.has_error then
|
if not error_handler.has_error then
|
||||||
a_user.set_id (last_inserted_user_id)
|
a_user.set_id (last_inserted_user_id)
|
||||||
update_user_roles (a_user)
|
update_user_roles (a_user)
|
||||||
@@ -226,6 +234,7 @@ feature -- Change: user
|
|||||||
else
|
else
|
||||||
sql_rollback_transaction
|
sql_rollback_transaction
|
||||||
end
|
end
|
||||||
|
sql_finalize
|
||||||
else
|
else
|
||||||
-- set error
|
-- set error
|
||||||
error_handler.add_custom_error (-1, "bad request" , "Missing password or email")
|
error_handler.add_custom_error (-1, "bad request" , "Missing password or email")
|
||||||
@@ -265,7 +274,7 @@ feature -- Change: user
|
|||||||
l_parameters.put (l_email, "email")
|
l_parameters.put (l_email, "email")
|
||||||
l_parameters.put (a_user.status, "status")
|
l_parameters.put (a_user.status, "status")
|
||||||
|
|
||||||
sql_change (sql_update_user, l_parameters)
|
sql_modify (sql_update_user, l_parameters)
|
||||||
if not error_handler.has_error then
|
if not error_handler.has_error then
|
||||||
update_user_roles (a_user)
|
update_user_roles (a_user)
|
||||||
end
|
end
|
||||||
@@ -274,6 +283,7 @@ feature -- Change: user
|
|||||||
else
|
else
|
||||||
sql_rollback_transaction
|
sql_rollback_transaction
|
||||||
end
|
end
|
||||||
|
sql_finalize
|
||||||
else
|
else
|
||||||
-- set error
|
-- set error
|
||||||
error_handler.add_custom_error (-1, "bad request" , "Missing password or email")
|
error_handler.add_custom_error (-1, "bad request" , "Missing password or email")
|
||||||
@@ -290,8 +300,9 @@ feature -- Change: user
|
|||||||
write_information_log (generator + ".delete_user")
|
write_information_log (generator + ".delete_user")
|
||||||
create l_parameters.make (1)
|
create l_parameters.make (1)
|
||||||
l_parameters.put (a_user.id, "uid")
|
l_parameters.put (a_user.id, "uid")
|
||||||
sql_change (sql_delete_user, l_parameters)
|
sql_modify (sql_delete_user, l_parameters)
|
||||||
sql_commit_transaction
|
sql_commit_transaction
|
||||||
|
sql_finalize
|
||||||
end
|
end
|
||||||
|
|
||||||
update_user_roles (a_user: CMS_USER)
|
update_user_roles (a_user: CMS_USER)
|
||||||
@@ -347,6 +358,7 @@ feature -- Change: user
|
|||||||
else
|
else
|
||||||
sql_rollback_transaction
|
sql_rollback_transaction
|
||||||
end
|
end
|
||||||
|
sql_finalize
|
||||||
end
|
end
|
||||||
|
|
||||||
assign_role_to_user (a_role: CMS_USER_ROLE; a_user: CMS_USER)
|
assign_role_to_user (a_role: CMS_USER_ROLE; a_user: CMS_USER)
|
||||||
@@ -356,7 +368,8 @@ feature -- Change: user
|
|||||||
create l_parameters.make (2)
|
create l_parameters.make (2)
|
||||||
l_parameters.put (a_user.id, "uid")
|
l_parameters.put (a_user.id, "uid")
|
||||||
l_parameters.put (a_role.id, "rid")
|
l_parameters.put (a_role.id, "rid")
|
||||||
sql_change (sql_insert_role_to_user, l_parameters)
|
sql_insert (sql_insert_role_to_user, l_parameters)
|
||||||
|
sql_finalize
|
||||||
end
|
end
|
||||||
|
|
||||||
unassign_role_from_user (a_role: CMS_USER_ROLE; a_user: CMS_USER)
|
unassign_role_from_user (a_role: CMS_USER_ROLE; a_user: CMS_USER)
|
||||||
@@ -366,7 +379,8 @@ feature -- Change: user
|
|||||||
create l_parameters.make (2)
|
create l_parameters.make (2)
|
||||||
l_parameters.put (a_user.id, "uid")
|
l_parameters.put (a_user.id, "uid")
|
||||||
l_parameters.put (a_role.id, "rid")
|
l_parameters.put (a_role.id, "rid")
|
||||||
sql_change (sql_delete_role_from_user, l_parameters)
|
sql_modify (sql_delete_role_from_user, l_parameters)
|
||||||
|
sql_finalize
|
||||||
end
|
end
|
||||||
|
|
||||||
feature -- Access: roles and permissions
|
feature -- Access: roles and permissions
|
||||||
@@ -380,13 +394,16 @@ feature -- Access: roles and permissions
|
|||||||
create l_parameters.make (1)
|
create l_parameters.make (1)
|
||||||
l_parameters.put (a_id, "rid")
|
l_parameters.put (a_id, "rid")
|
||||||
sql_query (select_user_role_by_id, l_parameters)
|
sql_query (select_user_role_by_id, l_parameters)
|
||||||
if sql_rows_count = 1 then
|
if not sql_after then
|
||||||
Result := fetch_user_role
|
Result := fetch_user_role
|
||||||
|
sql_forth
|
||||||
|
check one_row: sql_after end
|
||||||
|
sql_finalize
|
||||||
if Result /= Void and not has_error then
|
if Result /= Void and not has_error then
|
||||||
fill_user_role (Result)
|
fill_user_role (Result)
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
check no_more_than_one: sql_rows_count = 0 end
|
sql_finalize
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -400,13 +417,16 @@ feature -- Access: roles and permissions
|
|||||||
create l_parameters.make (1)
|
create l_parameters.make (1)
|
||||||
l_parameters.put (a_name, "name")
|
l_parameters.put (a_name, "name")
|
||||||
sql_query (select_user_role_by_name, l_parameters)
|
sql_query (select_user_role_by_name, l_parameters)
|
||||||
if sql_rows_count = 1 then
|
if not sql_after then
|
||||||
Result := fetch_user_role
|
Result := fetch_user_role
|
||||||
|
sql_forth
|
||||||
|
check one_row: sql_after end
|
||||||
|
sql_finalize
|
||||||
if Result /= Void and not has_error then
|
if Result /= Void and not has_error then
|
||||||
fill_user_role (Result)
|
fill_user_role (Result)
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
check no_more_than_one: sql_rows_count = 0 end
|
sql_finalize
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -431,6 +451,7 @@ feature -- Access: roles and permissions
|
|||||||
end
|
end
|
||||||
sql_forth
|
sql_forth
|
||||||
end
|
end
|
||||||
|
sql_finalize
|
||||||
if not has_error then
|
if not has_error then
|
||||||
across Result as ic loop
|
across Result as ic loop
|
||||||
fill_user_role (ic.item)
|
fill_user_role (ic.item)
|
||||||
@@ -458,6 +479,7 @@ feature -- Access: roles and permissions
|
|||||||
end
|
end
|
||||||
sql_forth
|
sql_forth
|
||||||
end
|
end
|
||||||
|
sql_finalize
|
||||||
if not has_error then
|
if not has_error then
|
||||||
across Result as ic loop
|
across Result as ic loop
|
||||||
fill_user_role (ic.item)
|
fill_user_role (ic.item)
|
||||||
@@ -501,6 +523,7 @@ feature -- Access: roles and permissions
|
|||||||
-- end
|
-- end
|
||||||
sql_forth
|
sql_forth
|
||||||
end
|
end
|
||||||
|
sql_finalize
|
||||||
end
|
end
|
||||||
|
|
||||||
role_permissions: LIST [READABLE_STRING_8]
|
role_permissions: LIST [READABLE_STRING_8]
|
||||||
@@ -522,6 +545,7 @@ feature -- Access: roles and permissions
|
|||||||
end
|
end
|
||||||
sql_forth
|
sql_forth
|
||||||
end
|
end
|
||||||
|
sql_finalize
|
||||||
end
|
end
|
||||||
|
|
||||||
feature -- Change: roles and permissions
|
feature -- Change: roles and permissions
|
||||||
@@ -550,7 +574,7 @@ feature -- Change: roles and permissions
|
|||||||
create l_parameters.make (2)
|
create l_parameters.make (2)
|
||||||
l_parameters.put (a_user_role.id, "rid")
|
l_parameters.put (a_user_role.id, "rid")
|
||||||
l_parameters.put (a_user_role.name, "name")
|
l_parameters.put (a_user_role.name, "name")
|
||||||
sql_change (sql_update_user_role, l_parameters)
|
sql_modify (sql_update_user_role, l_parameters)
|
||||||
end
|
end
|
||||||
if not a_user_role.permissions.is_empty then
|
if not a_user_role.permissions.is_empty then
|
||||||
-- FIXME: check if this is non set permissions,or none ...
|
-- FIXME: check if this is non set permissions,or none ...
|
||||||
@@ -596,14 +620,17 @@ feature -- Change: roles and permissions
|
|||||||
else
|
else
|
||||||
create l_parameters.make (1)
|
create l_parameters.make (1)
|
||||||
l_parameters.put (a_user_role.name, "name")
|
l_parameters.put (a_user_role.name, "name")
|
||||||
sql_change (sql_insert_user_role, l_parameters)
|
sql_insert (sql_insert_user_role, l_parameters)
|
||||||
if not error_handler.has_error then
|
if not error_handler.has_error then
|
||||||
a_user_role.set_id (last_inserted_user_role_id)
|
a_user_role.set_id (last_inserted_user_role_id)
|
||||||
|
sql_finalize
|
||||||
across
|
across
|
||||||
a_user_role.permissions as ic
|
a_user_role.permissions as ic
|
||||||
loop
|
loop
|
||||||
set_permission_for_role_id (ic.item, a_user_role.id)
|
set_permission_for_role_id (ic.item, a_user_role.id)
|
||||||
end
|
end
|
||||||
|
else
|
||||||
|
sql_finalize
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -619,7 +646,8 @@ feature -- Change: roles and permissions
|
|||||||
l_parameters.put (a_role_id, "rid")
|
l_parameters.put (a_role_id, "rid")
|
||||||
l_parameters.put (a_permission, "permission")
|
l_parameters.put (a_permission, "permission")
|
||||||
l_parameters.put (Void, "module") -- FIXME: unsupported for now!
|
l_parameters.put (Void, "module") -- FIXME: unsupported for now!
|
||||||
sql_change (sql_insert_user_role_permission, l_parameters)
|
sql_insert (sql_insert_user_role_permission, l_parameters)
|
||||||
|
sql_finalize
|
||||||
end
|
end
|
||||||
|
|
||||||
unset_permission_for_role_id (a_permission: READABLE_STRING_8; a_role_id: INTEGER)
|
unset_permission_for_role_id (a_permission: READABLE_STRING_8; a_role_id: INTEGER)
|
||||||
@@ -633,7 +661,8 @@ feature -- Change: roles and permissions
|
|||||||
create l_parameters.make (2)
|
create l_parameters.make (2)
|
||||||
l_parameters.put (a_role_id, "rid")
|
l_parameters.put (a_role_id, "rid")
|
||||||
l_parameters.put (a_permission, "permission")
|
l_parameters.put (a_permission, "permission")
|
||||||
sql_change (sql_delete_user_role_permission, l_parameters)
|
sql_modify (sql_delete_user_role_permission, l_parameters)
|
||||||
|
sql_finalize
|
||||||
end
|
end
|
||||||
|
|
||||||
last_inserted_user_role_id: INTEGER_32
|
last_inserted_user_role_id: INTEGER_32
|
||||||
@@ -642,9 +671,12 @@ feature -- Change: roles and permissions
|
|||||||
error_handler.reset
|
error_handler.reset
|
||||||
write_information_log (generator + ".last_inserted_user_role_id")
|
write_information_log (generator + ".last_inserted_user_role_id")
|
||||||
sql_query (Sql_last_insert_user_role_id, Void)
|
sql_query (Sql_last_insert_user_role_id, Void)
|
||||||
if sql_rows_count = 1 then
|
if not sql_after then
|
||||||
Result := sql_read_integer_32 (1)
|
Result := sql_read_integer_64 (1).to_integer_32
|
||||||
|
sql_forth
|
||||||
|
check one_row: sql_after end
|
||||||
end
|
end
|
||||||
|
sql_finalize
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
@@ -658,9 +690,10 @@ feature -- Change: roles and permissions
|
|||||||
write_information_log (generator + ".delete_role")
|
write_information_log (generator + ".delete_role")
|
||||||
create l_parameters.make (1)
|
create l_parameters.make (1)
|
||||||
l_parameters.put (a_role.id, "rid")
|
l_parameters.put (a_role.id, "rid")
|
||||||
sql_change (sql_delete_role_permissions_by_role_id, l_parameters)
|
sql_modify (sql_delete_role_permissions_by_role_id, l_parameters)
|
||||||
sql_change (sql_delete_role_by_id, l_parameters)
|
sql_modify (sql_delete_role_by_id, l_parameters)
|
||||||
sql_commit_transaction
|
sql_commit_transaction
|
||||||
|
sql_finalize
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
@@ -676,9 +709,12 @@ feature -- Access: User activation
|
|||||||
create l_parameters.make (1)
|
create l_parameters.make (1)
|
||||||
l_parameters.put (a_token, "token")
|
l_parameters.put (a_token, "token")
|
||||||
sql_query (sql_select_activation_expiration, l_parameters)
|
sql_query (sql_select_activation_expiration, l_parameters)
|
||||||
if sql_rows_count = 1 then
|
if not sql_after then
|
||||||
Result := sql_read_integer_32 (1)
|
Result := sql_read_integer_32 (1)
|
||||||
|
sql_forth
|
||||||
|
check one_row: sql_after end
|
||||||
end
|
end
|
||||||
|
sql_finalize
|
||||||
end
|
end
|
||||||
|
|
||||||
user_id_by_activation (a_token: READABLE_STRING_32): INTEGER_64
|
user_id_by_activation (a_token: READABLE_STRING_32): INTEGER_64
|
||||||
@@ -691,9 +727,12 @@ feature -- Access: User activation
|
|||||||
create l_parameters.make (1)
|
create l_parameters.make (1)
|
||||||
l_parameters.put (a_token, "token")
|
l_parameters.put (a_token, "token")
|
||||||
sql_query (sql_select_userid_activation, l_parameters)
|
sql_query (sql_select_userid_activation, l_parameters)
|
||||||
if sql_rows_count = 1 then
|
if not sql_after then
|
||||||
Result := sql_read_integer_32 (1)
|
Result := sql_read_integer_32 (1)
|
||||||
|
sql_forth
|
||||||
|
check one_row: sql_after end
|
||||||
end
|
end
|
||||||
|
sql_finalize
|
||||||
end
|
end
|
||||||
|
|
||||||
feature -- Change: User activation
|
feature -- Change: User activation
|
||||||
@@ -712,8 +751,9 @@ feature -- Change: User activation
|
|||||||
l_parameters.put (a_token, "token")
|
l_parameters.put (a_token, "token")
|
||||||
l_parameters.put (a_id, "uid")
|
l_parameters.put (a_id, "uid")
|
||||||
l_parameters.put (l_utc_date, "utc_date")
|
l_parameters.put (l_utc_date, "utc_date")
|
||||||
sql_change (sql_insert_activation, l_parameters)
|
sql_insert (sql_insert_activation, l_parameters)
|
||||||
sql_commit_transaction
|
sql_commit_transaction
|
||||||
|
sql_finalize
|
||||||
end
|
end
|
||||||
|
|
||||||
remove_activation (a_token: READABLE_STRING_32)
|
remove_activation (a_token: READABLE_STRING_32)
|
||||||
@@ -726,8 +766,9 @@ feature -- Change: User activation
|
|||||||
write_information_log (generator + ".remove_activation")
|
write_information_log (generator + ".remove_activation")
|
||||||
create l_parameters.make (1)
|
create l_parameters.make (1)
|
||||||
l_parameters.put (a_token, "token")
|
l_parameters.put (a_token, "token")
|
||||||
sql_change (sql_remove_activation, l_parameters)
|
sql_modify (sql_remove_activation, l_parameters)
|
||||||
sql_commit_transaction
|
sql_commit_transaction
|
||||||
|
sql_finalize
|
||||||
end
|
end
|
||||||
|
|
||||||
feature -- Change: User password recovery
|
feature -- Change: User password recovery
|
||||||
@@ -746,8 +787,9 @@ feature -- Change: User password recovery
|
|||||||
l_parameters.put (a_token, "token")
|
l_parameters.put (a_token, "token")
|
||||||
l_parameters.put (a_id, "uid")
|
l_parameters.put (a_id, "uid")
|
||||||
l_parameters.put (l_utc_date, "utc_date")
|
l_parameters.put (l_utc_date, "utc_date")
|
||||||
sql_change (sql_insert_password, l_parameters)
|
sql_insert (sql_insert_password, l_parameters)
|
||||||
sql_commit_transaction
|
sql_commit_transaction
|
||||||
|
sql_finalize
|
||||||
end
|
end
|
||||||
|
|
||||||
remove_password (a_token: READABLE_STRING_32)
|
remove_password (a_token: READABLE_STRING_32)
|
||||||
@@ -760,8 +802,9 @@ feature -- Change: User password recovery
|
|||||||
write_information_log (generator + ".remove_password")
|
write_information_log (generator + ".remove_password")
|
||||||
create l_parameters.make (1)
|
create l_parameters.make (1)
|
||||||
l_parameters.put (a_token, "token")
|
l_parameters.put (a_token, "token")
|
||||||
sql_change (sql_remove_password, l_parameters)
|
sql_modify (sql_remove_password, l_parameters)
|
||||||
sql_commit_transaction
|
sql_commit_transaction
|
||||||
|
sql_finalize
|
||||||
end
|
end
|
||||||
|
|
||||||
feature {NONE} -- Implementation: User
|
feature {NONE} -- Implementation: User
|
||||||
@@ -776,11 +819,14 @@ feature {NONE} -- Implementation: User
|
|||||||
create l_parameters.make (1)
|
create l_parameters.make (1)
|
||||||
l_parameters.put (a_username, "name")
|
l_parameters.put (a_username, "name")
|
||||||
sql_query (select_salt_by_username, l_parameters)
|
sql_query (select_salt_by_username, l_parameters)
|
||||||
if sql_rows_count = 1 then
|
if not sql_after then
|
||||||
if attached sql_read_string (1) as l_salt then
|
if attached sql_read_string (1) as l_salt then
|
||||||
Result := l_salt
|
Result := l_salt
|
||||||
end
|
end
|
||||||
|
sql_forth
|
||||||
|
check one_row: sql_after end
|
||||||
end
|
end
|
||||||
|
sql_finalize
|
||||||
end
|
end
|
||||||
|
|
||||||
fetch_user: detachable CMS_USER
|
fetch_user: detachable CMS_USER
|
||||||
@@ -826,9 +872,12 @@ feature {NONE} -- Implementation: User
|
|||||||
error_handler.reset
|
error_handler.reset
|
||||||
write_information_log (generator + ".last_inserted_user_id")
|
write_information_log (generator + ".last_inserted_user_id")
|
||||||
sql_query (Sql_last_insert_user_id, Void)
|
sql_query (Sql_last_insert_user_id, Void)
|
||||||
if sql_rows_count = 1 then
|
if not sql_after then
|
||||||
Result := sql_read_integer_64 (1)
|
Result := sql_read_integer_64 (1)
|
||||||
|
sql_forth
|
||||||
|
check one_row: sql_after end
|
||||||
end
|
end
|
||||||
|
sql_finalize
|
||||||
end
|
end
|
||||||
|
|
||||||
feature {NONE} -- Implementation: User role
|
feature {NONE} -- Implementation: User role
|
||||||
|
|||||||
Reference in New Issue
Block a user