75 lines
		
	
	
	
		
			1.9 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
		
		
			
		
	
	
			75 lines
		
	
	
	
		
			1.9 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
|   | 
 | ||
|  | Settings Table
 | ||
|  | ==============
 | ||
|  | 
 | ||
|  | Sometimes the :term:`config settings<config setting>` may come from a
 | ||
|  | :term:`settings table` as opposed to :term:`config file`.
 | ||
|  | 
 | ||
|  | The settings table resides in the :term:`app database`.
 | ||
|  | 
 | ||
|  | Note that as of writing, the WuttJamaican package *does not address*
 | ||
|  | how to create or setup the app database.  However it does have the
 | ||
|  | ability to query the settings table if present.
 | ||
|  | 
 | ||
|  | 
 | ||
|  | Table Structure
 | ||
|  | ---------------
 | ||
|  | 
 | ||
|  | Currently the table *must* be named ``setting`` and have (at least) 2
 | ||
|  | columns, ``name`` and ``value``:
 | ||
|  | 
 | ||
|  | .. code-block:: sql
 | ||
|  | 
 | ||
|  |    CREATE TABLE setting (
 | ||
|  |        name VARCHAR(255) NOT NULL PRIMARY KEY,
 | ||
|  |        value TEXT
 | ||
|  |    );
 | ||
|  | 
 | ||
|  | 
 | ||
|  | Configuring the DB Connection
 | ||
|  | -----------------------------
 | ||
|  | 
 | ||
|  | You must add some entries to your config file, to tell the app where
 | ||
|  | its database lives, and that it should be used for this purpose:
 | ||
|  | 
 | ||
|  | .. code-block:: ini
 | ||
|  | 
 | ||
|  |    [wutta.config]
 | ||
|  |    usedb = true
 | ||
|  |    preferdb = true
 | ||
|  | 
 | ||
|  |    [wutta.db]
 | ||
|  |    default.url = postgresql://wutta:wuttapass@localhost/wuttadb
 | ||
|  | 
 | ||
|  | This uses `SQLAlchemy`_ under the hood, so it should support anything
 | ||
|  | that does; see also
 | ||
|  | :meth:`~wuttjamaican.app.AppHandler.make_engine_from_config()`.
 | ||
|  | 
 | ||
|  | .. _SQLAlchemy: https://www.sqlalchemy.org
 | ||
|  | 
 | ||
|  | See :ref:`where-config-settings-come-from` for more about the
 | ||
|  | ``usedb`` and ``preferdb`` flags.
 | ||
|  | 
 | ||
|  | 
 | ||
|  | Querying the Table
 | ||
|  | ------------------
 | ||
|  | 
 | ||
|  | Normally there is no need to query directly, but rather the
 | ||
|  | :term:`config object` may do so automatically.
 | ||
|  | 
 | ||
|  | Assuming the config object knows to look in the settings table, then
 | ||
|  | it's just a matter of calling its normal
 | ||
|  | :meth:`~wuttjamaican.conf.WuttaConfig.get()` and similar methods::
 | ||
|  | 
 | ||
|  |    from wuttjamaican.conf import make_config
 | ||
|  | 
 | ||
|  |    config = make_config()
 | ||
|  |    
 | ||
|  |    config.get('foo.bar')
 | ||
|  |    config.get_bool('foo.flag')
 | ||
|  | 
 | ||
|  | If your config object does *not* check the settings table by default,
 | ||
|  | you can always ask it to explicitly::
 | ||
|  | 
 | ||
|  |    config.get('foo.bar', usedb=True, preferdb=True)
 |