1
0
mirror of https://github.com/ilri/dspace-statistics-api.git synced 2024-12-22 12:42:19 +01:00

Split database access into RW and RO

The indexer need to be able to write to the database, but the API only
needs to read it.
This commit is contained in:
Alan Orth 2018-09-24 00:00:05 +03:00
parent c554404d7f
commit 89621af85d
Signed by: alanorth
GPG Key ID: 0FB860CC9C45B1B9
3 changed files with 12 additions and 5 deletions

4
app.py
View File

@ -3,11 +3,11 @@
# https://wiki.duraspace.org/display/DSPACE/Solr
from config import SOLR_CORE
from database import database_connection
from database import database_connection_ro
import falcon
from solr import solr_connection
db = database_connection()
db = database_connection_ro()
solr = solr_connection()
class ItemResource:

View File

@ -1,11 +1,18 @@
from config import SQLITE_DB
import sqlite3
def database_connection():
def database_connection_rw():
connection = sqlite3.connect(SQLITE_DB)
# allow iterating over row results by column key
connection.row_factory = sqlite3.Row
return connection
def database_connection_ro():
connection = sqlite3.connect('file:{0}?mode=ro'.format(SQLITE_DB), uri=True)
# allow iterating over row results by column key
connection.row_factory = sqlite3.Row
return connection
# vim: set sw=4 ts=4 expandtab:

View File

@ -5,7 +5,7 @@
# https://wiki.duraspace.org/display/DSPACE/Solr
from config import SOLR_CORE
from database import database_connection
from database import database_connection_rw
from solr import solr_connection
def index_views():
@ -90,7 +90,7 @@ def index_downloads():
results_current_page += 1
db = database_connection()
db = database_connection_rw()
solr = solr_connection()
# use separate views and downloads tables so we can REPLACE INTO carelessly (ie, item may have views but no downloads)