alpha1 #8
							
								
								
									
										2
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,2 @@ | ||||
| .idea | ||||
| src/data/*.db | ||||
							
								
								
									
										0
									
								
								src/data/.gitkeep
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								src/data/.gitkeep
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										62
									
								
								src/lib/Data.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										62
									
								
								src/lib/Data.php
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,62 @@ | ||||
| <?php | ||||
| /** | ||||
|  * A centralized place for data access for the application | ||||
|  */ | ||||
| class Data { | ||||
| 
 | ||||
|     /** | ||||
|      * Obtain a new connection to the database | ||||
|      * @return SQLite3 A new connection to the database | ||||
|      */ | ||||
|     private static function getConnection(): SQLite3 { | ||||
|         $db = new SQLite3("../data/{${DATABASE_NAME}}"); | ||||
|         $db->exec('PRAGMA foreign_keys = ON;'); | ||||
|         return $db; | ||||
|     } | ||||
| 
 | ||||
|     public static function ensureDb(): void { | ||||
|         $db = self::getConnection(); | ||||
|         $tables = $db->query("SELECT name FROM sqlite_master WHERE type = 'table'")->fetchArray(SQLITE3_NUM); | ||||
|         if (!array_search('frc_user', $tables)) { | ||||
|             $query = <<<SQL | ||||
|                 CREATE TABLE frc_user ( | ||||
|                     id       INTEGER NOT NULL PRIMARY KEY, | ||||
|                     email    TEXT    NOT NULL, | ||||
|                     password TEXT    NOT NULL, | ||||
|                     salt     TEXT    NOT NULL) | ||||
|                 SQL; | ||||
|             $db->exec($query); | ||||
|             $db->exec('CREATE INDEX idx_user_email ON frc_user (email)'); | ||||
|         } | ||||
|         if (!array_search('feed', $tables)) { | ||||
|             $query = <<<SQL | ||||
|                 CREATE TABLE feed ( | ||||
|                     id         INTEGER NOT NULL PRIMARY KEY, | ||||
|                     user_id    INTEGER NOT NULL, | ||||
|                     url        TEXT    NOT NULL, | ||||
|                     checked_on TEXT, | ||||
|                     FOREIGN KEY (user_id) REFERENCES frc_user (id)) | ||||
|                 SQL; | ||||
|             $db->exec($query); | ||||
|         } | ||||
|         if (!array_search('item', $tables)) { | ||||
|             $query = <<<SQL | ||||
|                 CREATE TABLE item ( | ||||
|                     id            INTEGER NOT NULL PRIMARY KEY, | ||||
|                     feed_id       INTEGER NOT NULL, | ||||
|                     title         TEXT    NOT NULL, | ||||
|                     published_on  TEXT    NOT NULL, | ||||
|                     updated_on    TEXT, | ||||
|                     content       TEXT    NOT NULL, | ||||
|                     is_encoded    INTEGER NOT NULL, | ||||
|                     is_read       INTEGER NOT NULL, | ||||
|                     is_bookmarked INTEGER NOT NULL, | ||||
|                     FOREIGN KEY (feed_id) REFERENCES feed (id)) | ||||
|                 SQL; | ||||
|             $db->exec($query); | ||||
|         } | ||||
|         $db->close(); | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| Data::ensureDb(); | ||||
							
								
								
									
										20
									
								
								src/start.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								src/start.php
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,20 @@ | ||||
| <?php | ||||
| // USER CONFIGURATION ITEMS
 | ||||
| 
 | ||||
| /** | ||||
|  * Which security model should the application use? | ||||
|  * - 0 = single-user, no password | ||||
|  * - 1 = single-user with password | ||||
|  * - 2 = multi-user (all users require passwords) | ||||
|  * | ||||
|  * (NOTE THAT 1 AND 2 HAVE NOT YET BEEN IMPLEMENTED) | ||||
|  */ | ||||
| const SECURITY_MODEL = 0; | ||||
| 
 | ||||
| /** The name of the database file where users and feeds should be kept */ | ||||
| const DATABASE_NAME = 'frc.db'; | ||||
| 
 | ||||
| // END USER CONFIGURATION ITEMS
 | ||||
| //   (editing below this line is not advised)
 | ||||
| 
 | ||||
| include 'lib/Data.php'; | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user