add db migration mechanism #22
| @ -1,9 +0,0 @@ | |||||||
| INSERT INTO setting_groups (Description) VALUES ("guestbook"); |  | ||||||
| INSERT INTO setting_groups (Description) VALUES ("user"); |  | ||||||
| 
 |  | ||||||
| INSERT INTO setting_data_types (Description) VALUES ("alphanumeric") |  | ||||||
| INSERT INTO setting_data_types (Description) VALUES ("integer") |  | ||||||
| INSERT INTO setting_data_types (Description) VALUES ("datetime") |  | ||||||
| 
 |  | ||||||
| INSERT INTO settings (Description, Constrained, DataType, SettingGroup) |  | ||||||
| VALUES ("Local Timezone", 0, 1, 1); |  | ||||||
| @ -40,6 +40,7 @@ const ( | |||||||
| 	SETTING_TYPE_INTEGER = "integer" | 	SETTING_TYPE_INTEGER = "integer" | ||||||
| 	SETTING_TYPE_STRING  = "alphanumeric" | 	SETTING_TYPE_STRING  = "alphanumeric" | ||||||
| 	SETTING_TYPE_DATE    = "datetime" | 	SETTING_TYPE_DATE    = "datetime" | ||||||
|  | 	SETTING_TYPE_BOOL    = "boolean" | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| type Setting struct { | type Setting struct { | ||||||
| @ -88,6 +89,8 @@ func (s *Setting) Validate(value string) bool { | |||||||
| 		return s.validateAlphanum(value) | 		return s.validateAlphanum(value) | ||||||
| 	case SETTING_TYPE_DATE: | 	case SETTING_TYPE_DATE: | ||||||
| 		return s.validateDatetime(value) | 		return s.validateDatetime(value) | ||||||
|  | 	case SETTING_TYPE_BOOL: | ||||||
|  | 		return s.validateBool(value) | ||||||
| 	} | 	} | ||||||
| 	return false | 	return false | ||||||
| } | } | ||||||
| @ -152,3 +155,11 @@ func (s *Setting) validateDatetime(value string) bool { | |||||||
| func (s *Setting) validateAlphanum(value string) bool { | func (s *Setting) validateAlphanum(value string) bool { | ||||||
| 	return len(value) >= 0 | 	return len(value) >= 0 | ||||||
| } | } | ||||||
|  | 
 | ||||||
|  | func (s *Setting) validateBool(value string) bool { | ||||||
|  | 	_, err := strconv.ParseBool(value) | ||||||
|  | 	if err != nil { | ||||||
|  | 		return false | ||||||
|  | 	} | ||||||
|  | 	return true | ||||||
|  | } | ||||||
|  | |||||||
							
								
								
									
										2
									
								
								migrations/000001_create_users_table.down.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								migrations/000001_create_users_table.down.sql
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,2 @@ | |||||||
|  | DROP TABLE users; | ||||||
|  | DROP TABLE sessions; | ||||||
							
								
								
									
										16
									
								
								migrations/000001_create_users_table.up.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								migrations/000001_create_users_table.up.sql
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,16 @@ | |||||||
|  | CREATE TABLE users ( | ||||||
|  |     Id integer primary key autoincrement, | ||||||
|  |     ShortId integer UNIQUE NOT NULL, | ||||||
|  |     Username varchar(32) NOT NULL, | ||||||
|  |     Email varchar(256) UNIQUE NOT NULL, | ||||||
|  |     Deleted datetime, | ||||||
|  |     IsBanned boolean NOT NULL DEFAULT FALSE, | ||||||
|  |     HashedPassword char(60) NOT NULL, | ||||||
|  |     Created datetime NOT NULL | ||||||
|  | ); | ||||||
|  | 
 | ||||||
|  | CREATE TABLE sessions ( | ||||||
|  |     token CHAR(43) primary key, | ||||||
|  |     data BLOB NOT NULL, | ||||||
|  |     expiry TEXT NOT NULL | ||||||
|  | ); | ||||||
							
								
								
									
										3
									
								
								migrations/000002_create_websites_table.down.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								migrations/000002_create_websites_table.down.sql
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,3 @@ | |||||||
|  | DROP TABLE IF EXISTS guestbook_comments; | ||||||
|  | DROP TABLE IF EXISTS guestbooks; | ||||||
|  | DROP TABLE IF EXISTS websites; | ||||||
| @ -1,14 +1,3 @@ | |||||||
| CREATE TABLE users ( |  | ||||||
|     Id integer primary key autoincrement, |  | ||||||
|     ShortId integer UNIQUE NOT NULL, |  | ||||||
|     Username varchar(32) NOT NULL, |  | ||||||
|     Email varchar(256) UNIQUE NOT NULL, |  | ||||||
|     Deleted datetime, |  | ||||||
|     IsBanned boolean NOT NULL DEFAULT FALSE, |  | ||||||
|     HashedPassword char(60) NOT NULL, |  | ||||||
|     Created datetime NOT NULL |  | ||||||
| ); |  | ||||||
| 
 |  | ||||||
| CREATE TABLE websites ( | CREATE TABLE websites ( | ||||||
|     Id integer primary key autoincrement, |     Id integer primary key autoincrement, | ||||||
|     ShortId integer UNIQUE NOT NULL, |     ShortId integer UNIQUE NOT NULL, | ||||||
| @ -61,9 +50,3 @@ CREATE TABLE guestbook_comments ( | |||||||
|         ON DELETE RESTRICT |         ON DELETE RESTRICT | ||||||
|         ON UPDATE RESTRICT |         ON UPDATE RESTRICT | ||||||
| ); | ); | ||||||
| 
 |  | ||||||
| CREATE TABLE sessions ( |  | ||||||
|     token CHAR(43) primary key, |  | ||||||
|     data BLOB NOT NULL, |  | ||||||
|     expiry TEXT NOT NULL |  | ||||||
| ); |  | ||||||
							
								
								
									
										6
									
								
								migrations/000003_create_settings_tables.down.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								migrations/000003_create_settings_tables.down.sql
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,6 @@ | |||||||
|  | DROP TABLE IF EXISTS guestbook_settings; | ||||||
|  | DROP TABLE IF EXISTS user_settings; | ||||||
|  | DROP TABLE IF EXISTS allowed_setting_values; | ||||||
|  | DROP TABLE IF EXISTS settings; | ||||||
|  | DROP TABLE IF EXISTS setting_data_types; | ||||||
|  | DROP TABLE IF EXISTS setting_groups; | ||||||
| @ -68,9 +68,3 @@ CREATE TABLE guestbook_settings ( | |||||||
|         ON UPDATE RESTRICT |         ON UPDATE RESTRICT | ||||||
| ); | ); | ||||||
| 
 | 
 | ||||||
| INSERT INTO setting_groups (Description) VALUES ('guestbook'); |  | ||||||
| INSERT INTO setting_groups (Description) VALUES ('user'); |  | ||||||
| 
 |  | ||||||
| INSERT INTO setting_data_types (Description) VALUES ('alphanumeric'); |  | ||||||
| INSERT INTO setting_data_types (Description) VALUES ('integer'); |  | ||||||
| INSERT INTO setting_data_types (Description) VALUES ('datetime'); |  | ||||||
							
								
								
									
										20
									
								
								migrations/000004_insert_settings_info.down.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								migrations/000004_insert_settings_info.down.sql
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,20 @@ | |||||||
|  | DELETE FROM settings WHERE Description='remote_enabled'; | ||||||
|  | DELETE FROM settings WHERE Description='is_visible'; | ||||||
|  | DELETE FROM settings WHERE Description='reenable_comments'; | ||||||
|  | DELETE FROM settings WHERE Description='commenting_enabled'; | ||||||
|  | DELETE FROM settings WHERE Description='local_timezone'; | ||||||
|  | 
 | ||||||
|  | DELETE FROM setting_data_types WHERE Description='boolean'; | ||||||
|  | DELETE FROM setting_data_types WHERE Description='datetime'; | ||||||
|  | DELETE FROM setting_data_types WHERE Description='integer'; | ||||||
|  | DELETE FROM setting_data_types WHERE Description='alphanumeric'; | ||||||
|  | 
 | ||||||
|  | DELETE FROM setting_groups WHERE Description='user'; | ||||||
|  | DELETE FROM setting_groups WHERE Description='guestbook'; | ||||||
|  | 
 | ||||||
|  | DELETE FROM allowed_setting_values WHERE Caption='commenting_enabled'; | ||||||
|  | DELETE FROM allowed_setting_values WHERE Caption='commenting_disabled'; | ||||||
|  | DELETE FROM allowed_setting_values WHERE Caption='guestbook_visible'; | ||||||
|  | DELETE FROM allowed_setting_values WHERE Caption='guestbook_invisible'; | ||||||
|  | DELETE FROM allowed_setting_values WHERE Caption='remote_enabled'; | ||||||
|  | DELETE FROM allowed_setting_values WHERE Caption='remote_disabled'; | ||||||
							
								
								
									
										40
									
								
								migrations/000004_insert_settings_info.up.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										40
									
								
								migrations/000004_insert_settings_info.up.sql
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,40 @@ | |||||||
|  | INSERT INTO setting_groups (Description) VALUES ('guestbook'); | ||||||
|  | INSERT INTO setting_groups (Description) VALUES ('user'); | ||||||
|  | 
 | ||||||
|  | INSERT INTO setting_data_types (Description) VALUES ('alphanumeric'); | ||||||
|  | INSERT INTO setting_data_types (Description) VALUES ('integer'); | ||||||
|  | INSERT INTO setting_data_types (Description) VALUES ('datetime'); | ||||||
|  | INSERT INTO setting_data_types (Description) VALUES ('boolean'); | ||||||
|  | 
 | ||||||
|  | INSERT INTO settings (Description, Constrained, DataType, SettingGroup) | ||||||
|  |     SELECT 'local_timezone', 0, t.id, g.id FROM setting_data_types as t INNER JOIN setting_groups AS g WHERE g.Description='user' AND t.Description='alphanumeric'; | ||||||
|  | 
 | ||||||
|  | INSERT INTO settings (Description, Constrained, DataType, SettingGroup) | ||||||
|  |     SELECT 'commenting_enabled', 1, t.id, g.id FROM setting_data_types as t INNER JOIN setting_groups AS g WHERE g.Description='guestbook' AND t.Description='boolean'; | ||||||
|  | 
 | ||||||
|  | INSERT INTO allowed_setting_values (SettingId, ItemValue, Caption) | ||||||
|  |     SELECT settings.id, 'true', 'commenting_enabled' FROM settings WHERE settings.Description='commenting_enabled'; | ||||||
|  | 
 | ||||||
|  | INSERT INTO allowed_setting_values (SettingId, ItemValue, Caption) | ||||||
|  |     SELECT settings.id, 'false', 'commenting_disabled' FROM settings WHERE settings.Description='commenting_enabled'; | ||||||
|  | 
 | ||||||
|  | INSERT INTO settings (Description, Constrained, DataType, SettingGroup) | ||||||
|  |     SELECT 'reenable_comments', 0, t.id, g.id FROM setting_data_types as t INNER JOIN setting_groups as g WHERE g.Description='guestbook' AND t.Description='alphanumeric'; | ||||||
|  | 
 | ||||||
|  | INSERT INTO settings (Description, Constrained, DataType, SettingGroup) | ||||||
|  |     SELECT 'is_visible', 1, t.id, g.id FROM setting_data_types as t INNER JOIN setting_groups as g WHERE g.Description='guestbook' AND t.Description='boolean'; | ||||||
|  | 
 | ||||||
|  | INSERT INTO allowed_setting_values (SettingId, ItemValue, Caption) | ||||||
|  |     SELECT settings.id, 'true', 'guestbook_visible' FROM settings WHERE settings.Description='is_visible'; | ||||||
|  | 
 | ||||||
|  | INSERT INTO allowed_setting_values (SettingId, ItemValue, Caption) | ||||||
|  |     SELECT settings.id, 'false', 'guestbook_invisible' FROM settings WHERE settings.Description='is_visible'; | ||||||
|  | 
 | ||||||
|  | INSERT INTO settings (Description, Constrained, DataType, SettingGroup) | ||||||
|  |     SELECT 'remote_enabled', 1, t.id, g.id FROM setting_data_types as t INNER JOIN setting_groups as g WHERE g.Description='guestbook' AND t.Description='boolean'; | ||||||
|  | 
 | ||||||
|  | INSERT INTO allowed_setting_values (SettingId, ItemValue, Caption) | ||||||
|  |     SELECT settings.id, 'true', 'remote_enabled' FROM settings WHERE settings.Description='remote_enabled'; | ||||||
|  | 
 | ||||||
|  | INSERT INTO allowed_setting_values (SettingId, ItemValue, Caption) | ||||||
|  |     SELECT settings.id, 'false', 'remote_disabled' FROM settings WHERE settings.Description='remote_enabled'; | ||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user