Ferreteria/v2/usage/db: Difference between revisions

From Woozle Writes Code
< Ferreteria‎ | v2‎ | usage
Jump to navigation Jump to search
(→‎Files: updated)
(note about field formats)
Line 24: Line 24:
==Classes==
==Classes==
===primary===
===primary===
* '''fcDBOFactory''' {{ferreteria/code|db/db.php}}: static class for creating connections
* '''fcDBOFactory''': static class for creating connections
* '''fcDataEngine''' {{ferreteria/code|db/db-engine}}: handler for a particular type of database
* '''fcDataEngine''': handler for a particular type of database
* '''fcDataConn''' {{ferreteria/code|db/db-conn.php}}: connection to a database
* '''fcDataConn''': connection to a database
===helpers===
==Notes==
'''2017-09-15''' There's been some issue around the formatting of recordset fields. Tentatively, the only way to be consistent without requiring a lot of extra helper code that would be unnecessary most of the time is to assume they will be in the same format as the database, e.g. a BIT field will be asc(0) or asc(1) and needs to have conversion-{to/from}-boolean methods if it's going to be used as such. Database format is referred to as "stored", and simplest-calculable-internal representation (e.g. for dates, typically UNIX integer seconds since epoch, though there are other date formats requiring different representations) is referred to as "native".

Revision as of 11:23, 15 September 2017

About

Databases in Ferreteria are managed through several sets of classes that work together. I am in the process of rewriting this module from scratch; information about the existing code is in /v1.

Rules

  • Each Connection should be requested from the static DBO Factory class by passing it a connection spec.
  • The Factory looks up which Connection class is needed for the type specified in the connection spec.
  • The Factory creates the appropriate Connection object, passes it the rest of the spec to initialize it, and returns it to the caller.

Files

Core classes:

Helpers:

This is only a partial list, but includes some of the most heavily-used files.

Classes

primary

  • fcDBOFactory: static class for creating connections
  • fcDataEngine: handler for a particular type of database
  • fcDataConn: connection to a database

Notes

2017-09-15 There's been some issue around the formatting of recordset fields. Tentatively, the only way to be consistent without requiring a lot of extra helper code that would be unnecessary most of the time is to assume they will be in the same format as the database, e.g. a BIT field will be asc(0) or asc(1) and needs to have conversion-{to/from}-boolean methods if it's going to be used as such. Database format is referred to as "stored", and simplest-calculable-internal representation (e.g. for dates, typically UNIX integer seconds since epoch, though there are other date formats requiring different representations) is referred to as "native".