@@ -0,0 +1,34 @@ | |||||
JAVA version : Openjdk 17 (jdk-17.0.2) | |||||
For launch.json: | |||||
{ | |||||
// Use IntelliSense to learn about possible attributes. | |||||
// Hover to view descriptions of existing attributes. | |||||
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 | |||||
"version": "0.2.0", | |||||
"configurations": [ | |||||
{ | |||||
"type": "java", | |||||
"name": "FhsmsCApplication", | |||||
"request": "launch", | |||||
"mainClass": "com.ffii.fhsmsc.FhsmsCApplication", | |||||
"projectName": "FhsmsC" | |||||
}, | |||||
{ | |||||
"type": "java", | |||||
"name": "Launch Local", | |||||
"request": "launch", | |||||
"mainClass": "com.ffii.fhsmsc.FhsmsCApplication", | |||||
"console": "internalConsole", | |||||
"projectName": "", | |||||
"args": "--spring.profiles.active=db-local,local" | |||||
} | |||||
] | |||||
} | |||||
######################### | |||||
For build war | |||||
1. run .\gradlew clean build | |||||
2. go to path: .\build\libs | |||||
3. copy war to Tomcat server | |||||
@@ -0,0 +1,11 @@ | |||||
spring: | |||||
datasource: | |||||
jdbc-url: jdbc:mysql://192.168.1.228:3306/fhsmscdb?useUnicode=true&characterEncoding=UTF8&serverTimezone=GMT%2B8 | |||||
username: root | |||||
password: secret | |||||
driver-class-name: com.mysql.cj.jdbc.Driver | |||||
springdoc: | |||||
api-docs: | |||||
path: /v3/api-docs | |||||
enabled: true |
@@ -0,0 +1,10 @@ | |||||
spring: | |||||
datasource: | |||||
jdbc-url: jdbc:mysql://127.0.0.1:3308/fhsmscdb?useUnicode=true&characterEncoding=UTF8&serverTimezone=GMT%2B8 | |||||
username: root | |||||
password: secret | |||||
springdoc: | |||||
api-docs: | |||||
path: /v3/api-docs | |||||
enabled: true |
@@ -0,0 +1,11 @@ | |||||
spring: | |||||
datasource: | |||||
jdbc-url: jdbc:mysql://127.0.0.1:3306/fhsmscdb?useUnicode=true&characterEncoding=UTF8&serverTimezone=GMT%2B8 | |||||
username: root | |||||
password: secret | |||||
driver-class-name: com.mysql.cj.jdbc.Driver | |||||
springdoc: | |||||
api-docs: | |||||
path: /v3/api-docs | |||||
enabled: true |
@@ -0,0 +1,9 @@ | |||||
spring: | |||||
ldap: | |||||
embedded: | |||||
port: 8389 | |||||
base-dn: dc=springframework,dc=org | |||||
ldif: classpath:ldap-test-users.ldif | |||||
validation: | |||||
enabled: false | |||||
urls: ldap://localhost:8389 |
@@ -0,0 +1,2 @@ | |||||
host: | |||||
url: http://localhost:3000 |
@@ -0,0 +1,2 @@ | |||||
logging: | |||||
config: 'classpath:log4j2-prod-linux.yml' |
@@ -0,0 +1,4 @@ | |||||
server: | |||||
port: 8087 | |||||
logging: | |||||
config: 'classpath:log4j2-prod-win.yml' |
@@ -0,0 +1,28 @@ | |||||
server: | |||||
servlet: | |||||
contextPath: /api | |||||
encoding: | |||||
charset: UTF-8 | |||||
enabled: true | |||||
force: true | |||||
port: 8090 | |||||
error: | |||||
include-message: always | |||||
tomcat: | |||||
connection-timeout: 300000 | |||||
spring: | |||||
servlet: | |||||
multipart: | |||||
max-file-size: 500MB | |||||
max-request-size: 600MB | |||||
jpa: | |||||
hibernate: | |||||
naming: | |||||
physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl | |||||
database-platform: org.hibernate.dialect.MySQL8Dialect | |||||
properties: | |||||
hibernate: | |||||
dialect: | |||||
storage_engine: innodb | |||||
logging: | |||||
config: 'classpath:log4j2.yml' |
@@ -0,0 +1 @@ | |||||
C:\workspace\FHSMS-C-backend\src\main\java\com\ffii\fhsmsc\modules\Menu\req\fb_menuResponsity.java |
@@ -0,0 +1 @@ | |||||
C:\workspace\FHSMS-C-backend\src\main\java\com\ffii\fhsmsc\modules\User_group\enity\UserGroupMembersRepository.java |
@@ -0,0 +1,385 @@ | |||||
--liquibase formatted sql | |||||
--changeset terence:create table | |||||
--comment: create table | |||||
-- | |||||
-- Table structure for table `audit_log` | |||||
-- | |||||
DROP TABLE IF EXISTS `audit_log`; | |||||
/*!40101 SET @saved_cs_client = @@character_set_client */; | |||||
/*!50503 SET character_set_client = utf8mb4 */; | |||||
CREATE TABLE `audit_log` ( | |||||
`tableName` varchar(30) NOT NULL, | |||||
`recordId` int NOT NULL, | |||||
`recordName` varchar(500) DEFAULT NULL, | |||||
`modifiedBy` int DEFAULT NULL, | |||||
`modified` datetime DEFAULT NULL, | |||||
`oldData` json DEFAULT NULL, | |||||
`newData` json DEFAULT NULL, | |||||
KEY `idx_tableName_recordId` (`tableName`,`recordId`) | |||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; | |||||
/*!40101 SET character_set_client = @saved_cs_client */; | |||||
-- | |||||
-- Dumping data for table `audit_log` | |||||
-- | |||||
LOCK TABLES `audit_log` WRITE; | |||||
/*!40000 ALTER TABLE `audit_log` DISABLE KEYS */; | |||||
/*!40000 ALTER TABLE `audit_log` ENABLE KEYS */; | |||||
UNLOCK TABLES; | |||||
-- | |||||
-- Table structure for table `authority` | |||||
-- | |||||
DROP TABLE IF EXISTS `authority`; | |||||
/*!40101 SET @saved_cs_client = @@character_set_client */; | |||||
/*!50503 SET character_set_client = utf8mb4 */; | |||||
CREATE TABLE `authority` ( | |||||
`id` int NOT NULL AUTO_INCREMENT, | |||||
`authority` varchar(255) NOT NULL, | |||||
`name` varchar(100) NOT NULL, | |||||
`module` varchar(50) DEFAULT NULL, | |||||
`description` varchar(255) DEFAULT NULL, | |||||
PRIMARY KEY (`id`), | |||||
UNIQUE KEY `authority` (`authority`) | |||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; | |||||
/*!40101 SET character_set_client = @saved_cs_client */; | |||||
-- | |||||
-- Dumping data for table `authority` | |||||
-- | |||||
LOCK TABLES `authority` WRITE; | |||||
/*!40000 ALTER TABLE `authority` DISABLE KEYS */; | |||||
/*!40000 ALTER TABLE `authority` ENABLE KEYS */; | |||||
UNLOCK TABLES; | |||||
-- | |||||
-- Table structure for table `file` | |||||
-- | |||||
DROP TABLE IF EXISTS `file`; | |||||
/*!40101 SET @saved_cs_client = @@character_set_client */; | |||||
/*!50503 SET character_set_client = utf8mb4 */; | |||||
CREATE TABLE `file` ( | |||||
`id` int NOT NULL AUTO_INCREMENT, | |||||
`created` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, | |||||
`createdBy` int DEFAULT NULL, | |||||
`version` int NOT NULL DEFAULT '0', | |||||
`modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, | |||||
`modifiedBy` int DEFAULT NULL, | |||||
`deleted` tinyint(1) NOT NULL DEFAULT '0', | |||||
`filename` varchar(255) NOT NULL, | |||||
`skey` varchar(50) NOT NULL, | |||||
`extension` varchar(10) DEFAULT NULL, | |||||
`mimetype` varchar(100) DEFAULT NULL, | |||||
`filesize` int DEFAULT NULL, | |||||
`remarks` varchar(255) DEFAULT NULL, | |||||
PRIMARY KEY (`id`) | |||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; | |||||
/*!40101 SET character_set_client = @saved_cs_client */; | |||||
-- | |||||
-- Dumping data for table `file` | |||||
-- | |||||
LOCK TABLES `file` WRITE; | |||||
/*!40000 ALTER TABLE `file` DISABLE KEYS */; | |||||
/*!40000 ALTER TABLE `file` ENABLE KEYS */; | |||||
UNLOCK TABLES; | |||||
-- | |||||
-- Table structure for table `file_blob` | |||||
-- | |||||
DROP TABLE IF EXISTS `file_blob`; | |||||
/*!40101 SET @saved_cs_client = @@character_set_client */; | |||||
/*!50503 SET character_set_client = utf8mb4 */; | |||||
CREATE TABLE `file_blob` ( | |||||
`id` int NOT NULL AUTO_INCREMENT, | |||||
`created` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, | |||||
`createdBy` int DEFAULT NULL, | |||||
`version` int NOT NULL DEFAULT '0', | |||||
`modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, | |||||
`modifiedBy` int DEFAULT NULL, | |||||
`deleted` tinyint(1) NOT NULL DEFAULT '0', | |||||
`fileId` int NOT NULL, | |||||
`bytes` longblob NOT NULL, | |||||
PRIMARY KEY (`id`) | |||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; | |||||
/*!40101 SET character_set_client = @saved_cs_client */; | |||||
-- | |||||
-- Dumping data for table `file_blob` | |||||
-- | |||||
LOCK TABLES `file_blob` WRITE; | |||||
/*!40000 ALTER TABLE `file_blob` DISABLE KEYS */; | |||||
/*!40000 ALTER TABLE `file_blob` ENABLE KEYS */; | |||||
UNLOCK TABLES; | |||||
-- | |||||
-- Table structure for table `file_ref` | |||||
-- | |||||
DROP TABLE IF EXISTS `file_ref`; | |||||
/*!40101 SET @saved_cs_client = @@character_set_client */; | |||||
/*!50503 SET character_set_client = utf8mb4 */; | |||||
CREATE TABLE `file_ref` ( | |||||
`id` int NOT NULL AUTO_INCREMENT, | |||||
`created` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, | |||||
`createdBy` int DEFAULT NULL, | |||||
`version` int NOT NULL DEFAULT '0', | |||||
`modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, | |||||
`modifiedBy` int DEFAULT NULL, | |||||
`deleted` tinyint(1) NOT NULL DEFAULT '0', | |||||
`fileId` int DEFAULT NULL, | |||||
`refCode` varchar(50) DEFAULT NULL, | |||||
`refId` int NOT NULL, | |||||
`refType` varchar(50) NOT NULL, | |||||
`remarks` varchar(255) DEFAULT NULL, | |||||
`thumbnailFileId` int DEFAULT NULL, | |||||
PRIMARY KEY (`id`) | |||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; | |||||
/*!40101 SET character_set_client = @saved_cs_client */; | |||||
-- | |||||
-- Dumping data for table `file_ref` | |||||
-- | |||||
LOCK TABLES `file_ref` WRITE; | |||||
/*!40000 ALTER TABLE `file_ref` DISABLE KEYS */; | |||||
/*!40000 ALTER TABLE `file_ref` ENABLE KEYS */; | |||||
UNLOCK TABLES; | |||||
-- | |||||
-- Table structure for table `group` | |||||
-- | |||||
DROP TABLE IF EXISTS `group`; | |||||
/*!40101 SET @saved_cs_client = @@character_set_client */; | |||||
/*!50503 SET character_set_client = utf8mb4 */; | |||||
CREATE TABLE `group` ( | |||||
`id` int NOT NULL AUTO_INCREMENT, | |||||
`created` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, | |||||
`createdBy` int DEFAULT NULL, | |||||
`version` int NOT NULL DEFAULT '0', | |||||
`modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, | |||||
`modifiedBy` int DEFAULT NULL, | |||||
`deleted` tinyint(1) NOT NULL DEFAULT '0', | |||||
`name` varchar(50) NOT NULL, | |||||
`description` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL, | |||||
PRIMARY KEY (`id`), | |||||
UNIQUE KEY `name` (`name`) | |||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; | |||||
/*!40101 SET character_set_client = @saved_cs_client */; | |||||
-- | |||||
-- Dumping data for table `group` | |||||
-- | |||||
LOCK TABLES `group` WRITE; | |||||
/*!40000 ALTER TABLE `group` DISABLE KEYS */; | |||||
/*!40000 ALTER TABLE `group` ENABLE KEYS */; | |||||
UNLOCK TABLES; | |||||
-- | |||||
-- Table structure for table `group_authority` | |||||
-- | |||||
DROP TABLE IF EXISTS `group_authority`; | |||||
/*!40101 SET @saved_cs_client = @@character_set_client */; | |||||
/*!50503 SET character_set_client = utf8mb4 */; | |||||
CREATE TABLE `group_authority` ( | |||||
`groupId` int NOT NULL, | |||||
`authId` int NOT NULL, | |||||
PRIMARY KEY (`groupId`,`authId`) | |||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; | |||||
/*!40101 SET character_set_client = @saved_cs_client */; | |||||
-- | |||||
-- Dumping data for table `group_authority` | |||||
-- | |||||
LOCK TABLES `group_authority` WRITE; | |||||
/*!40000 ALTER TABLE `group_authority` DISABLE KEYS */; | |||||
/*!40000 ALTER TABLE `group_authority` ENABLE KEYS */; | |||||
UNLOCK TABLES; | |||||
-- | |||||
-- Table structure for table `settings` | |||||
-- | |||||
DROP TABLE IF EXISTS `settings`; | |||||
/*!40101 SET @saved_cs_client = @@character_set_client */; | |||||
/*!50503 SET character_set_client = utf8mb4 */; | |||||
CREATE TABLE `settings` ( | |||||
`id` int NOT NULL AUTO_INCREMENT, | |||||
`name` varchar(255) NOT NULL, | |||||
`value` text NOT NULL, | |||||
`category` varchar(50) DEFAULT NULL, | |||||
`type` varchar(10) DEFAULT NULL, | |||||
PRIMARY KEY (`id`), | |||||
KEY `name_idx` (`name`) | |||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; | |||||
/*!40101 SET character_set_client = @saved_cs_client */; | |||||
-- | |||||
-- Dumping data for table `settings` | |||||
-- | |||||
LOCK TABLES `settings` WRITE; | |||||
/*!40000 ALTER TABLE `settings` DISABLE KEYS */; | |||||
/*!40000 ALTER TABLE `settings` ENABLE KEYS */; | |||||
UNLOCK TABLES; | |||||
-- | |||||
-- Table structure for table `user` | |||||
-- | |||||
DROP TABLE IF EXISTS `user`; | |||||
/*!40101 SET @saved_cs_client = @@character_set_client */; | |||||
/*!50503 SET character_set_client = utf8mb4 */; | |||||
CREATE TABLE `user` ( | |||||
`id` int NOT NULL AUTO_INCREMENT, | |||||
`created` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, | |||||
`createdBy` int DEFAULT NULL, | |||||
`version` int NOT NULL DEFAULT '0', | |||||
`modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, | |||||
`modifiedBy` int DEFAULT NULL, | |||||
`deleted` tinyint(1) NOT NULL DEFAULT '0', | |||||
`username` varchar(30) NOT NULL, | |||||
`password` varchar(60) DEFAULT NULL, | |||||
`locked` tinyint(1) NOT NULL DEFAULT '0', | |||||
`expiryDate` date DEFAULT NULL, | |||||
`name` varchar(50) NOT NULL, | |||||
`locale` varchar(5) DEFAULT NULL, | |||||
`fullname` varchar(90) DEFAULT NULL, | |||||
`firstname` varchar(45) DEFAULT NULL, | |||||
`lastname` varchar(30) DEFAULT NULL, | |||||
`title` varchar(60) DEFAULT NULL, | |||||
`department` varchar(60) DEFAULT NULL, | |||||
`email` varchar(120) DEFAULT NULL, | |||||
`phone1` varchar(30) DEFAULT NULL, | |||||
`phone2` varchar(30) DEFAULT NULL, | |||||
`remarks` varchar(600) DEFAULT NULL, | |||||
`post` varchar(50) DEFAULT NULL, | |||||
PRIMARY KEY (`id`) | |||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; | |||||
/*!40101 SET character_set_client = @saved_cs_client */; | |||||
-- | |||||
-- Dumping data for table `user` | |||||
-- | |||||
LOCK TABLES `user` WRITE; | |||||
/*!40000 ALTER TABLE `user` DISABLE KEYS */; | |||||
/*!40000 ALTER TABLE `user` ENABLE KEYS */; | |||||
UNLOCK TABLES; | |||||
-- | |||||
-- Table structure for table `user_authority` | |||||
-- | |||||
DROP TABLE IF EXISTS `user_authority`; | |||||
/*!40101 SET @saved_cs_client = @@character_set_client */; | |||||
/*!50503 SET character_set_client = utf8mb4 */; | |||||
CREATE TABLE `user_authority` ( | |||||
`userId` int NOT NULL, | |||||
`authId` int NOT NULL, | |||||
PRIMARY KEY (`userId`,`authId`) | |||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; | |||||
/*!40101 SET character_set_client = @saved_cs_client */; | |||||
-- | |||||
-- Dumping data for table `user_authority` | |||||
-- | |||||
LOCK TABLES `user_authority` WRITE; | |||||
/*!40000 ALTER TABLE `user_authority` DISABLE KEYS */; | |||||
/*!40000 ALTER TABLE `user_authority` ENABLE KEYS */; | |||||
UNLOCK TABLES; | |||||
-- | |||||
-- Table structure for table `user_group` | |||||
-- | |||||
DROP TABLE IF EXISTS `user_group`; | |||||
/*!40101 SET @saved_cs_client = @@character_set_client */; | |||||
/*!50503 SET character_set_client = utf8mb4 */; | |||||
CREATE TABLE `user_group` ( | |||||
`groupId` int NOT NULL, | |||||
`userId` int NOT NULL, | |||||
PRIMARY KEY (`groupId`,`userId`) | |||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; | |||||
/*!40101 SET character_set_client = @saved_cs_client */; | |||||
-- | |||||
-- Dumping data for table `user_group` | |||||
-- | |||||
LOCK TABLES `user_group` WRITE; | |||||
/*!40000 ALTER TABLE `user_group` DISABLE KEYS */; | |||||
/*!40000 ALTER TABLE `user_group` ENABLE KEYS */; | |||||
UNLOCK TABLES; | |||||
-- | |||||
-- Table structure for table `user_login_log` | |||||
-- | |||||
DROP TABLE IF EXISTS `user_login_log`; | |||||
/*!40101 SET @saved_cs_client = @@character_set_client */; | |||||
/*!50503 SET character_set_client = utf8mb4 */; | |||||
CREATE TABLE `user_login_log` ( | |||||
`username` varchar(32) NOT NULL, | |||||
`loginTime` datetime NOT NULL, | |||||
`ipAddr` varchar(45) NOT NULL, | |||||
`success` tinyint(1) NOT NULL, | |||||
PRIMARY KEY (`username`,`loginTime`) | |||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; | |||||
/*!40101 SET character_set_client = @saved_cs_client */; | |||||
-- | |||||
-- Dumping data for table `user_login_log` | |||||
-- | |||||
LOCK TABLES `user_login_log` WRITE; | |||||
/*!40000 ALTER TABLE `user_login_log` DISABLE KEYS */; | |||||
/*!40000 ALTER TABLE `user_login_log` ENABLE KEYS */; | |||||
UNLOCK TABLES; | |||||
-- | |||||
-- Table structure for table `user_password_history` | |||||
-- | |||||
DROP TABLE IF EXISTS `user_password_history`; | |||||
/*!40101 SET @saved_cs_client = @@character_set_client */; | |||||
/*!50503 SET character_set_client = utf8mb4 */; | |||||
CREATE TABLE `user_password_history` ( | |||||
`id` int NOT NULL AUTO_INCREMENT, | |||||
`created` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, | |||||
`createdBy` int DEFAULT NULL, | |||||
`version` int NOT NULL DEFAULT '0', | |||||
`modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, | |||||
`modifiedBy` int DEFAULT NULL, | |||||
`deleted` tinyint(1) NOT NULL DEFAULT '0', | |||||
`userId` int NOT NULL, | |||||
`date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, | |||||
`password` varchar(255) DEFAULT NULL, | |||||
PRIMARY KEY (`id`) | |||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; | |||||
/*!40101 SET character_set_client = @saved_cs_client */; | |||||
-- | |||||
-- Dumping data for table `user_password_history` | |||||
-- | |||||
LOCK TABLES `user_password_history` WRITE; | |||||
/*!40000 ALTER TABLE `user_password_history` DISABLE KEYS */; | |||||
/*!40000 ALTER TABLE `user_password_history` ENABLE KEYS */; | |||||
UNLOCK TABLES; | |||||
@@ -0,0 +1,32 @@ | |||||
--liquibase formatted sql | |||||
--changeset terence:insert group authority | |||||
--comment: insert group authority | |||||
LOCK TABLES `authority` WRITE; | |||||
/*!40000 ALTER TABLE `authority` DISABLE KEYS */; | |||||
INSERT INTO `authority` VALUES (1,'MAINTAIN_USER_GROUP','Maintain User Group','System Administration','Allow to maintain user group'),(2,'MAINTAIN_USER','Maintain User','System Administration','Allow to maintain user'),(3,'VIEW_AUDIT_LOG','View Audit Log','System Administration','Allow to view audit log'),(4,'VIEW_LOGIN_LOG','View Login Log','System Administration','Allow to view login log'),(5,'MANAGE_PASSWORD_POLICY','Manage Password Policy','System Administration','Allow to manage password policy'),(6,'MANAGE_SYSTEM_CONFIGURATION','Manage System Configuration','System Administration','Allow to manage system configuration'); | |||||
/*!40000 ALTER TABLE `authority` ENABLE KEYS */; | |||||
UNLOCK TABLES; | |||||
-- | |||||
-- Table structure for table `group` | |||||
-- | |||||
LOCK TABLES `group` WRITE; | |||||
/*!40000 ALTER TABLE `group` DISABLE KEYS */; | |||||
INSERT INTO `group` VALUES | |||||
(1,NOW(),1,0,NOW(),1,0,'System Administrator','System Administrator Group') | |||||
; | |||||
/*!40000 ALTER TABLE `group` ENABLE KEYS */; | |||||
UNLOCK TABLES; | |||||
-- | |||||
-- Table structure for table `group_authority` | |||||
-- | |||||
LOCK TABLES `group_authority` WRITE; | |||||
/*!40000 ALTER TABLE `group_authority` DISABLE KEYS */; | |||||
INSERT INTO `group_authority` VALUES (1,1),(1,2),(1,3),(1,4),(1,5),(1,6); | |||||
/*!40000 ALTER TABLE `group_authority` ENABLE KEYS */; | |||||
UNLOCK TABLES; |
@@ -0,0 +1,10 @@ | |||||
--liquibase formatted sql | |||||
--changeset terence:insert setting | |||||
--comment: insert setting | |||||
LOCK TABLES `settings` WRITE; | |||||
/*!40000 ALTER TABLE `settings` DISABLE KEYS */; | |||||
INSERT INTO `settings` VALUES (1,'SYS.idleLogoutTime','60','settings','integer'),(2,'MAIL.smtp.host','','settings','string'),(3,'MAIL.smtp.port','25','settings','integer'),(4,'MAIL.smtp.username','','settings','string'),(5,'MAIL.smtp.password','','settings','string'),(6,'MAIL.smtp.auth','','settings','boolean'),(7,'SYS.password.rule.length.min','10','passwordPolicy','integer'),(8,'SYS.password.rule.duration','180','passwordPolicy','integer'),(9,'SYS.password.rule.history','8','passwordPolicy','integer'),(10,'SYS.loginAttempt.limit','5','passwordPolicy','integer'),(11,'SYS.loginAttempt.penalityTime','5','passwordPolicy','integer'),(12,'SYS.password.rule.numberAndAlphabetic','true','passwordPolicy','boolean'),(13,'SYS.password.rule.specialCharacter','true','passwordPolicy','boolean'),(14,'SYS.password.rule.notContainUsername','true','passwordPolicy','boolean'),(15,'SYS.password.rule.notContainThreeConsecutiveCharacters','true','passwordPolicy','boolean'); | |||||
/*!40000 ALTER TABLE `settings` ENABLE KEYS */; | |||||
UNLOCK TABLES; |
@@ -0,0 +1,8 @@ | |||||
--liquibase formatted sql | |||||
--changeset terence:insert setting | |||||
--comment: insert setting | |||||
INSERT INTO `user` ( `id`, `created`, `createdBy`, `version`, `modified`, `modifiedBy`, `deleted`, `username`, `password`, `locked`, `expiryDate`, `name`, `locale`, `fullname`, `firstname`, `lastname`, `title`, `department`, `email`, `phone1`, `phone2`, `remarks`, `post` ) VALUES ( '1', NOW(), '1', '0', NOW(), '1', '0', '2fi', '$2a$10$cRJ.TOZPExg49qk.zmJlruW/Rj7X05vVMxD1CgAOOegZMsC1IPCFm', '0', NULL, '2fi', NULL, '2fi', NULL, NULL, NULL, NULL, '', '', NULL, NULL, '' ); | |||||
INSERT INTO `user_group` (`groupId`, `userId`) VALUES ('1', '1'); |
@@ -0,0 +1,8 @@ | |||||
--liquibase formatted sql | |||||
--changeset terence:insert setting | |||||
--comment: insert setting | |||||
INSERT INTO `user` ( `id`, `created`, `createdBy`, `version`, `modified`, `modifiedBy`, `deleted`, `username`, `password`, `locked`, `expiryDate`, `name`, `locale`, `fullname`, `firstname`, `lastname`, `title`, `department`, `email`, `phone1`, `phone2`, `remarks`, `post` ) VALUES ( '2', NOW(), '2', '0', NOW(), '2', '0', '2fi2', '1234', '0', NULL, '2fi2', NULL, '2fi2', NULL, NULL, NULL, NULL, '', '', NULL, NULL, '' ); | |||||
INSERT INTO `user_group` (`groupId`, `userId`) VALUES ('2', '2'); |
@@ -0,0 +1,54 @@ | |||||
--liquibase formatted sql | |||||
--changeset terence:create-table-and-insert-data | |||||
--comment: Create table and insert data | |||||
-- Create table structure | |||||
CREATE TABLE `food1` ( | |||||
`id` int(11) NOT NULL, | |||||
`name` varchar(100) NOT NULL, | |||||
`kcal` decimal(10,2) DEFAULT NULL, | |||||
`protein` decimal(10,2) NOT NULL DEFAULT 0.00, | |||||
`fat` decimal(10,2) NOT NULL DEFAULT 0.00, | |||||
`satFat` decimal(10,2) NOT NULL DEFAULT 0.00, | |||||
`carbo` decimal(10,2) NOT NULL DEFAULT 0.00, | |||||
`sodium` decimal(10,2) NOT NULL DEFAULT 0.00, | |||||
`Ingredients` varchar(255) DEFAULT NULL, | |||||
`food_type` varchar(255) DEFAULT NULL | |||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; | |||||
INSERT INTO `food1` (`id`, `name`, `kcal`, `protein`, `fat`, `satFat`, `carbo`, `sodium`, `Ingredients`, `food_type`) VALUES | |||||
(1, 'Apple', 52.00, 0.00, 0.00, 0.00, 14.00, 0.00, NULL, 'fruit'), | |||||
(2, 'Banana', 105.00, 1.30, 0.30, 0.10, 27.00, 1.00, NULL, 'fruit'), | |||||
(3, 'Chicken breast', 165.00, 31.00, 6.10, 2.00, 1.00, 69.00, NULL, 'food'), | |||||
(4, 'Brown rice', 216.00, 5.00, 3.00, 0.40, 45.00, 0.00, NULL, 'food'), | |||||
(5, 'Yogurt', 148.00, 5.20, 6.10, 3.40, 10.00, 125.00, NULL, 'food'), | |||||
(6, 'Egg', 78.00, 6.30, 5.60, 1.60, 0.40, 62.00, NULL, 'food'), | |||||
(7, 'Avocado', 160.00, 2.00, 14.60, 2.00, 8.50, 7.00, NULL, 'fruit'), | |||||
(8, 'Salmon', 206.00, 22.00, 13.60, 3.80, 5.00, 0.00, NULL, 'food'), | |||||
(9, 'Spinach', 23.00, 2.70, 0.40, 0.10, 3.60, 79.00, NULL, 'vegetable'), | |||||
(10, 'Carrot', 41.00, 0.90, 0.20, 0.00, 9.60, 69.00, NULL, 'vegetable'), | |||||
(11, 'Broccoli', 34.00, 2.80, 0.60, 0.20, 6.60, 66.00, NULL, 'vegetable'), | |||||
(12, 'Potato', 77.00, 2.00, 0.10, 0.00, 17.30, 10.00, NULL, 'vegetable'), | |||||
(13, 'Sweet potato', 101.00, 1.60, 0.10, 0.00, 22.00, 3.00, NULL, 'vegetable'), | |||||
(14, 'Onion', 40.00, 1.40, 0.10, 0.00, 9.30, 3.00, NULL, 'vegetable'), | |||||
(15, 'Garlic', 140.00, 6.70, 15.40, 3.30, 6.20, 167.00, NULL, 'food'), | |||||
(16, 'Tomato', 18.00, 0.90, 0.20, 0.00, 3.90, 5.00, NULL, 'vegetable'), | |||||
(17, 'Cucumber', 16.00, 0.70, 0.10, 0.00, 3.80, 2.00, NULL, 'fruit'), | |||||
(18, 'Lettuce', 8.00, 0.80, 0.20, 0.10, 1.70, 5.00, NULL, 'vegetable'), | |||||
(19, 'Bread', 265.00, 9.40, 4.60, 1.30, 52.00, 150.00, NULL, 'food'), | |||||
(20, 'Pasta', 131.00, 5.50, 1.00, 0.20, 26.00, 0.00, NULL, 'food'), | |||||
(21, 'Cheese', 402.00, 20.60, 33.10, 23.20, 1.30, 0.00, NULL, 'food'), | |||||
(22, 'Milk', 50.00, 3.30, 3.30, 1.70, 4.80, 120.00, NULL, 'drink'), | |||||
(23, 'Beef', 250.00, 22.00, 21.00, 8.00, 0.00, 50.00, NULL, 'food'), | |||||
(24, 'Pork', 241.00, 15.10, 19.70, 7.30, 0.00, 49.00, NULL, 'food'), | |||||
(25, 'Lamb', 294.00, 17.50, 23.20, 9.20, 0.00, 0.00, NULL, 'food'), | |||||
(26, 'Chicken thigh', 197.00, 27.00, 14.90, 5.20, 0.00, 0.00, NULL, 'food'); | |||||
ALTER TABLE `food1` | |||||
ADD PRIMARY KEY (`id`); | |||||
ALTER TABLE `food1` | |||||
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=27; | |||||
COMMIT; |
@@ -0,0 +1,19 @@ | |||||
--liquibase formatted sql | |||||
--changeset terence:create-table-and-insert-data | |||||
--comment: Create table and insert data | |||||
-- Create table structure | |||||
CREATE TABLE `food_items` ( | |||||
`id` int(11) NOT NULL, | |||||
`name` varchar(255) NOT NULL, | |||||
`kcal` float DEFAULT NULL, | |||||
`protein` float DEFAULT NULL, | |||||
`fat` float DEFAULT NULL, | |||||
`sat_fat` float DEFAULT NULL, | |||||
`carbo` float DEFAULT NULL, | |||||
`sodium` float DEFAULT NULL, | |||||
`date` datetime DEFAULT NULL, | |||||
`size` float DEFAULT NULL, | |||||
`meal` varchar(50) DEFAULT NULL, | |||||
`user_id` int(11) DEFAULT NULL | |||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; |
@@ -0,0 +1,352 @@ | |||||
--liquibase formatted sql | |||||
--changeset terence:create-table-and-insert-data | |||||
--comment: Alter table and insert data | |||||
INSERT INTO `food_items` (`id`, `name`, `kcal`, `protein`, `fat`, `sat_fat`, `carbo`, `sodium`, `date`, `size`, `meal`, `user_id`) VALUES | |||||
(4, 'Banana', 105, 1.3, 0.3, 0.1, 27, 1, '2024-11-12 03:36:53', 100, 'breakfast', 1), | |||||
(5, 'Banana', 105, 1.3, 0.3, 0.1, 27, 1, '2024-11-10 04:04:28', 100, 'breakfast', 2), | |||||
(7, 'Banana', 9450, 117, 27, 9, 2430, 90, '2024-11-11 14:20:39', 9000, 'breakfast', 1), | |||||
(16, 'Salmon', 206, 22, 13.6, 3.8, 5, 0, '2024-11-14 02:02:19', 100, 'Dinner', 1), | |||||
(21, 'Pork', 180.8, 11.3, 14.8, 5.5, 0, 36.8, '2024-11-04 06:09:00', 75, 'Breakfast', 1), | |||||
(22, 'Pork', 337.4, 21.1, 27.6, 10.2, 0, 68.6, '2024-11-04 13:06:00', 140, 'Lunch', 1), | |||||
(23, 'Bread', 532.6, 18.9, 9.2, 2.6, 104.5, 301.5, '2024-11-04 17:28:00', 201, 'Dinner', 1), | |||||
(24, 'Garlic', 436.8, 20.9, 48, 10.3, 19.3, 521, '2024-11-04 17:28:00', 312, 'Dinner', 1), | |||||
(25, 'Bread', 1240.2, 44, 21.5, 6.1, 243.4, 702, '2024-11-05 06:40:00', 468, 'Breakfast', 1), | |||||
(26, 'Cucumber', 26.4, 1.2, 0.2, 0, 6.3, 3.3, '2024-11-05 06:40:00', 165, 'Breakfast', 1), | |||||
(27, 'Apple', 86.8, 0, 0, 0, 23.4, 0, '2024-11-05 12:35:00', 167, 'Lunch', 1), | |||||
(28, 'Bread', 638.7, 22.7, 11.1, 3.1, 125.3, 361.5, '2024-11-05 12:35:00', 241, 'Lunch', 1), | |||||
(29, 'Milk', 63.5, 4.2, 4.2, 2.2, 6.1, 152.4, '2024-11-05 17:36:00', 127, 'Dinner', 1), | |||||
(30, 'Broccoli', 31.6, 2.6, 0.6, 0.2, 6.1, 61.4, '2024-11-06 08:02:00', 93, 'Breakfast', 1), | |||||
(31, 'Potato', 184, 4.8, 0.2, 0, 41.3, 23.9, '2024-11-06 11:54:00', 239, 'Lunch', 1), | |||||
(32, 'Brown rice', 395.3, 9.2, 5.5, 0.7, 82.4, 0, '2024-11-06 11:54:00', 183, 'Lunch', 1), | |||||
(33, 'Yogurt', 130.2, 4.6, 5.4, 3, 8.8, 110, '2024-11-06 17:23:00', 88, 'Dinner', 1), | |||||
(34, 'Milk', 235, 15.5, 15.5, 8, 22.6, 564, '2024-11-07 06:00:00', 470, 'Breakfast', 1), | |||||
(35, 'Pasta', 279, 11.7, 2.1, 0.4, 55.4, 0, '2024-11-07 06:00:00', 213, 'Breakfast', 1), | |||||
(36, 'Lamb', 385.1, 22.9, 30.4, 12.1, 0, 0, '2024-11-07 13:43:00', 131, 'Lunch', 1), | |||||
(37, 'Yogurt', 497.3, 17.5, 20.5, 11.4, 33.6, 420, '2024-11-07 13:43:00', 336, 'Lunch', 1), | |||||
(38, 'Egg', 122.5, 9.9, 8.8, 2.5, 0.6, 97.3, '2024-11-07 19:13:00', 157, 'Dinner', 1), | |||||
(39, 'Carrot', 89, 2, 0.4, 0, 20.8, 149.7, '2024-11-07 19:13:00', 217, 'Dinner', 1), | |||||
(40, 'Garlic', 680.4, 32.6, 74.8, 16, 30.1, 811.6, '2024-11-08 08:52:00', 486, 'Breakfast', 1), | |||||
(41, 'Egg', 79.6, 6.4, 5.7, 1.6, 0.4, 63.2, '2024-11-08 08:52:00', 102, 'Breakfast', 1), | |||||
(42, 'Potato', 63.9, 1.7, 0.1, 0, 14.4, 8.3, '2024-11-08 13:22:00', 83, 'Lunch', 1), | |||||
(43, 'Salmon', 984.7, 105.2, 65, 18.2, 23.9, 0, '2024-11-08 19:18:00', 478, 'Dinner', 1), | |||||
(44, 'Tomato', 86, 4.3, 1, 0, 18.6, 23.9, '2024-11-09 06:19:00', 478, 'Breakfast', 1), | |||||
(45, 'Garlic', 518, 24.8, 57, 12.2, 22.9, 617.9, '2024-11-09 11:32:00', 370, 'Lunch', 1), | |||||
(46, 'Beef', 907.5, 79.9, 76.2, 29, 0, 181.5, '2024-11-09 11:32:00', 363, 'Lunch', 1), | |||||
(47, 'Beef', 517.5, 45.5, 43.5, 16.6, 0, 103.5, '2024-11-09 18:54:00', 207, 'Dinner', 1), | |||||
(48, 'Brown rice', 658.8, 15.2, 9.1, 1.2, 137.2, 0, '2024-11-09 18:54:00', 305, 'Dinner', 1), | |||||
(49, 'Egg', 69.4, 5.6, 5, 1.4, 0.4, 55.2, '2024-11-10 08:40:00', 89, 'Breakfast', 1), | |||||
(50, 'Apple', 90, 0, 0, 0, 24.2, 0, '2024-11-10 11:17:00', 173, 'Lunch', 1), | |||||
(51, 'Chicken breast', 227.7, 42.8, 8.4, 2.8, 0, 95.2, '2024-11-10 11:17:00', 138, 'Lunch', 1), | |||||
(52, 'Brown rice', 561.6, 13, 7.8, 1, 117, 0, '2024-11-10 17:05:00', 260, 'Dinner', 1), | |||||
(53, 'Spinach', 85.3, 10, 1.5, 0.4, 13.4, 293.1, '2024-11-04 08:47:00', 371, 'Breakfast', 2), | |||||
(54, 'Potato', 224.8, 5.8, 0.3, 0, 50.5, 29.2, '2024-11-04 08:47:00', 292, 'Breakfast', 2), | |||||
(55, 'Pork', 282, 17.7, 23, 8.5, 0, 57.3, '2024-11-04 13:48:00', 117, 'Lunch', 2), | |||||
(56, 'Cheese', 695.5, 35.6, 57.3, 40.1, 2.2, 0, '2024-11-04 19:05:00', 173, 'Dinner', 2), | |||||
(57, 'Cucumber', 16, 0.7, 0.1, 0, 3.8, 2, '2024-11-05 07:37:00', 100, 'Breakfast', 2), | |||||
(58, 'Cheese', 1523.6, 78.1, 125.4, 87.9, 4.9, 0, '2024-11-05 07:37:00', 379, 'Breakfast', 2), | |||||
(59, 'Chicken thigh', 374.3, 51.3, 28.3, 9.9, 0, 0, '2024-11-05 13:53:00', 190, 'Lunch', 2), | |||||
(60, 'Chicken thigh', 439.3, 60.2, 33.2, 11.6, 0, 0, '2024-11-05 13:53:00', 223, 'Lunch', 2), | |||||
(61, 'Garlic', 520.8, 24.9, 57.3, 12.3, 23.1, 621.2, '2024-11-05 18:09:00', 372, 'Dinner', 2), | |||||
(62, 'Apple', 210.6, 0, 0, 0, 56.7, 0, '2024-11-05 18:09:00', 405, 'Dinner', 2), | |||||
(63, 'Pasta', 191.3, 8, 1.5, 0.3, 38, 0, '2024-11-06 08:19:00', 146, 'Breakfast', 2), | |||||
(64, 'Yogurt', 338.9, 11.9, 14, 7.8, 22.9, 286.2, '2024-11-06 13:41:00', 229, 'Lunch', 2), | |||||
(65, 'Cucumber', 41.9, 1.8, 0.3, 0, 10, 5.2, '2024-11-06 13:41:00', 262, 'Lunch', 2), | |||||
(66, 'Potato', 170.2, 4.4, 0.2, 0, 38.2, 22.1, '2024-11-06 17:15:00', 221, 'Dinner', 2), | |||||
(67, 'Carrot', 125.5, 2.8, 0.6, 0, 29.4, 211.1, '2024-11-06 17:15:00', 306, 'Dinner', 2), | |||||
(68, 'Chicken thigh', 496.4, 68, 37.5, 13.1, 0, 0, '2024-11-07 08:03:00', 252, 'Breakfast', 2), | |||||
(69, 'Egg', 59.3, 4.8, 4.3, 1.2, 0.3, 47.1, '2024-11-07 08:03:00', 76, 'Breakfast', 2), | |||||
(70, 'Onion', 117.2, 4.1, 0.3, 0, 27.2, 8.8, '2024-11-07 12:33:00', 293, 'Lunch', 2), | |||||
(71, 'Pasta', 119.2, 5, 0.9, 0.2, 23.7, 0, '2024-11-07 12:33:00', 91, 'Lunch', 2), | |||||
(72, 'Carrot', 81.2, 1.8, 0.4, 0, 19, 136.6, '2024-11-07 17:09:00', 198, 'Dinner', 2), | |||||
(73, 'Spinach', 70.4, 8.3, 1.2, 0.3, 11, 241.7, '2024-11-08 07:29:00', 306, 'Breakfast', 2), | |||||
(74, 'Bread', 1240.2, 44, 21.5, 6.1, 243.4, 702, '2024-11-08 07:29:00', 468, 'Breakfast', 2), | |||||
(75, 'Apple', 225.7, 0, 0, 0, 60.8, 0, '2024-11-08 13:24:00', 434, 'Lunch', 2), | |||||
(76, 'Garlic', 491.4, 23.5, 54.1, 11.6, 21.8, 586.2, '2024-11-08 13:24:00', 351, 'Lunch', 2), | |||||
(77, 'Chicken breast', 183.2, 34.4, 6.8, 2.2, 0, 76.6, '2024-11-08 18:06:00', 111, 'Dinner', 2), | |||||
(78, 'Banana', 487.2, 6, 1.4, 0.5, 125.3, 4.6, '2024-11-08 18:06:00', 464, 'Dinner', 2), | |||||
(79, 'Tomato', 21.2, 1.1, 0.2, 0, 4.6, 5.9, '2024-11-09 06:11:00', 118, 'Breakfast', 2), | |||||
(80, 'Spinach', 110.9, 13, 1.9, 0.5, 17.4, 380.8, '2024-11-09 06:11:00', 482, 'Breakfast', 2), | |||||
(81, 'Cucumber', 68, 3, 0.4, 0, 16.1, 8.5, '2024-11-09 12:33:00', 425, 'Lunch', 2), | |||||
(82, 'Chicken breast', 189.7, 35.6, 7, 2.3, 0, 79.3, '2024-11-09 17:53:00', 115, 'Dinner', 2), | |||||
(83, 'Lamb', 1396.5, 83.1, 110.2, 43.7, 0, 0, '2024-11-10 08:16:00', 475, 'Breakfast', 2), | |||||
(84, 'Lamb', 1437.7, 85.6, 113.4, 45, 0, 0, '2024-11-10 12:08:00', 489, 'Lunch', 2), | |||||
(85, 'Bread', 561.8, 19.9, 9.8, 2.8, 110.2, 318, '2024-11-10 12:08:00', 212, 'Lunch', 2), | |||||
(86, 'Chicken thigh', 478.7, 65.6, 36.2, 12.6, 0, 0, '2024-11-10 18:47:00', 243, 'Dinner', 2), | |||||
(87, 'Apple', 43.2, 0, 0, 0, 11.6, 0, '2024-11-04 08:13:00', 83, 'Breakfast', 3), | |||||
(88, 'Garlic', 109.2, 5.2, 12, 2.6, 4.8, 130.3, '2024-11-04 11:22:00', 78, 'Lunch', 3), | |||||
(89, 'Broccoli', 158.8, 13.1, 2.8, 0.9, 30.8, 308.2, '2024-11-04 11:22:00', 467, 'Lunch', 3), | |||||
(90, 'Milk', 200, 13.2, 13.2, 6.8, 19.2, 480, '2024-11-04 18:25:00', 400, 'Dinner', 3), | |||||
(91, 'Cheese', 1290.4, 66.1, 106.3, 74.5, 4.2, 0, '2024-11-05 07:51:00', 321, 'Breakfast', 3), | |||||
(92, 'Tomato', 71.6, 3.6, 0.8, 0, 15.5, 19.9, '2024-11-05 07:51:00', 398, 'Breakfast', 3), | |||||
(93, 'Lamb', 308.7, 18.4, 24.4, 9.7, 0, 0, '2024-11-05 13:43:00', 105, 'Lunch', 3), | |||||
(94, 'Yogurt', 464.7, 16.3, 19.2, 10.7, 31.4, 392.5, '2024-11-05 17:15:00', 314, 'Dinner', 3), | |||||
(95, 'Lamb', 726.2, 43.2, 57.3, 22.7, 0, 0, '2024-11-06 08:12:00', 247, 'Breakfast', 3), | |||||
(96, 'Beef', 607.5, 53.5, 51, 19.4, 0, 121.5, '2024-11-06 08:12:00', 243, 'Breakfast', 3), | |||||
(97, 'Garlic', 427, 20.4, 47, 10.1, 18.9, 509.3, '2024-11-06 11:43:00', 305, 'Lunch', 3), | |||||
(98, 'Salmon', 271.9, 29, 18, 5, 6.6, 0, '2024-11-06 19:18:00', 132, 'Dinner', 3), | |||||
(99, 'Salmon', 366.7, 39.2, 24.2, 6.8, 8.9, 0, '2024-11-07 07:44:00', 178, 'Breakfast', 3), | |||||
(100, 'Sweet potato', 404, 6.4, 0.4, 0, 88, 12, '2024-11-07 12:21:00', 400, 'Lunch', 3), | |||||
(101, 'Sweet potato', 101, 1.6, 0.1, 0, 22, 3, '2024-11-07 18:45:00', 100, 'Dinner', 3), | |||||
(102, 'Lettuce', 8.6, 0.9, 0.2, 0.1, 1.8, 5.4, '2024-11-08 08:42:00', 107, 'Breakfast', 3), | |||||
(103, 'Garlic', 233.8, 11.2, 25.7, 5.5, 10.4, 278.9, '2024-11-08 08:42:00', 167, 'Breakfast', 3), | |||||
(104, 'Milk', 207.5, 13.7, 13.7, 7.1, 19.9, 498, '2024-11-08 11:06:00', 415, 'Lunch', 3), | |||||
(105, 'Cheese', 747.7, 38.3, 61.6, 43.2, 2.4, 0, '2024-11-08 11:06:00', 186, 'Lunch', 3), | |||||
(106, 'Salmon', 828.1, 88.4, 54.7, 15.3, 20.1, 0, '2024-11-08 19:08:00', 402, 'Dinner', 3), | |||||
(107, 'Yogurt', 216.1, 7.6, 8.9, 5, 14.6, 182.5, '2024-11-08 19:08:00', 146, 'Dinner', 3), | |||||
(108, 'Bread', 816.2, 29, 14.2, 4, 160.2, 462, '2024-11-09 06:17:00', 308, 'Breakfast', 3), | |||||
(109, 'Onion', 190.4, 6.7, 0.5, 0, 44.3, 14.3, '2024-11-09 13:04:00', 476, 'Lunch', 3), | |||||
(110, 'Banana', 280.3, 3.5, 0.8, 0.3, 72.1, 2.7, '2024-11-09 13:04:00', 267, 'Lunch', 3), | |||||
(111, 'Avocado', 574.4, 7.2, 52.4, 7.2, 30.5, 25.1, '2024-11-09 17:53:00', 359, 'Dinner', 3), | |||||
(112, 'Carrot', 41.4, 0.9, 0.2, 0, 9.7, 69.7, '2024-11-10 06:57:00', 101, 'Breakfast', 3), | |||||
(113, 'Cheese', 1093.4, 56, 90, 63.1, 3.5, 0, '2024-11-10 11:51:00', 272, 'Lunch', 3), | |||||
(114, 'Pork', 253.1, 15.9, 20.7, 7.7, 0, 51.5, '2024-11-10 11:51:00', 105, 'Lunch', 3), | |||||
(115, 'Lettuce', 8.6, 0.9, 0.2, 0.1, 1.8, 5.4, '2024-11-10 17:02:00', 108, 'Dinner', 3), | |||||
(116, 'Milk', 98, 6.5, 6.5, 3.3, 9.4, 235.2, '2024-11-10 17:02:00', 196, 'Dinner', 3), | |||||
(117, 'Cucumber', 69.3, 3, 0.4, 0, 16.5, 8.7, '2024-11-04 07:44:00', 433, 'Breakfast', 4), | |||||
(118, 'Pasta', 482.1, 20.2, 3.7, 0.7, 95.7, 0, '2024-11-04 07:44:00', 368, 'Breakfast', 4), | |||||
(119, 'Lamb', 358.7, 21.3, 28.3, 11.2, 0, 0, '2024-11-04 11:37:00', 122, 'Lunch', 4), | |||||
(120, 'Pork', 257.9, 16.2, 21.1, 7.8, 0, 52.4, '2024-11-04 11:37:00', 107, 'Lunch', 4), | |||||
(121, 'Banana', 269.8, 3.3, 0.8, 0.3, 69.4, 2.6, '2024-11-04 18:32:00', 257, 'Dinner', 4), | |||||
(122, 'Tomato', 24.7, 1.2, 0.3, 0, 5.3, 6.9, '2024-11-04 18:32:00', 137, 'Dinner', 4), | |||||
(123, 'Yogurt', 384.8, 13.5, 15.9, 8.8, 26, 325, '2024-11-05 06:05:00', 260, 'Breakfast', 4), | |||||
(124, 'Yogurt', 380.4, 13.4, 15.7, 8.7, 25.7, 321.2, '2024-11-05 06:05:00', 257, 'Breakfast', 4), | |||||
(125, 'Lettuce', 17, 1.7, 0.4, 0.2, 3.6, 10.6, '2024-11-05 12:17:00', 212, 'Lunch', 4), | |||||
(126, 'Milk', 214, 14.1, 14.1, 7.3, 20.5, 513.6, '2024-11-05 12:17:00', 428, 'Lunch', 4), | |||||
(127, 'Egg', 244.9, 19.8, 17.6, 5, 1.3, 194.7, '2024-11-05 17:57:00', 314, 'Dinner', 4), | |||||
(128, 'Pork', 1185.7, 74.3, 96.9, 35.9, 0, 241.1, '2024-11-05 17:57:00', 492, 'Dinner', 4), | |||||
(129, 'Yogurt', 519.5, 18.3, 21.4, 11.9, 35.1, 438.8, '2024-11-06 06:03:00', 351, 'Breakfast', 4), | |||||
(130, 'Sweet potato', 502, 8, 0.5, 0, 109.3, 14.9, '2024-11-06 06:03:00', 497, 'Breakfast', 4), | |||||
(131, 'Bread', 1017.6, 36.1, 17.7, 5, 199.7, 576, '2024-11-06 12:56:00', 384, 'Lunch', 4), | |||||
(132, 'Lamb', 1237.7, 73.7, 97.7, 38.7, 0, 0, '2024-11-06 18:02:00', 421, 'Dinner', 4), | |||||
(133, 'Avocado', 384, 4.8, 35, 4.8, 20.4, 16.8, '2024-11-07 07:48:00', 240, 'Breakfast', 4), | |||||
(134, 'Milk', 103.5, 6.8, 6.8, 3.5, 9.9, 248.4, '2024-11-07 07:48:00', 207, 'Breakfast', 4), | |||||
(135, 'Broccoli', 124.8, 10.3, 2.2, 0.7, 24.2, 242.2, '2024-11-07 13:38:00', 367, 'Lunch', 4), | |||||
(136, 'Cheese', 932.6, 47.8, 76.8, 53.8, 3, 0, '2024-11-07 13:38:00', 232, 'Lunch', 4), | |||||
(137, 'Lettuce', 19.2, 1.9, 0.5, 0.2, 4.1, 12, '2024-11-07 17:46:00', 240, 'Dinner', 4), | |||||
(138, 'Lamb', 655.6, 39, 51.7, 20.5, 0, 0, '2024-11-07 17:46:00', 223, 'Dinner', 4), | |||||
(139, 'Chicken thigh', 922, 126.4, 69.7, 24.3, 0, 0, '2024-11-08 06:52:00', 468, 'Breakfast', 4), | |||||
(140, 'Chicken thigh', 165.5, 22.7, 12.5, 4.4, 0, 0, '2024-11-08 06:52:00', 84, 'Breakfast', 4), | |||||
(141, 'Brown rice', 607, 14.1, 8.4, 1.1, 126.5, 0, '2024-11-08 11:38:00', 281, 'Lunch', 4), | |||||
(142, 'Yogurt', 627.5, 22, 25.9, 14.4, 42.4, 530, '2024-11-08 18:25:00', 424, 'Dinner', 4), | |||||
(143, 'Chicken breast', 94, 17.7, 3.5, 1.1, 0, 39.3, '2024-11-09 08:14:00', 57, 'Breakfast', 4), | |||||
(144, 'Cucumber', 64.2, 2.8, 0.4, 0, 15.2, 8, '2024-11-09 11:24:00', 401, 'Lunch', 4), | |||||
(145, 'Cucumber', 20.5, 0.9, 0.1, 0, 4.9, 2.6, '2024-11-09 19:34:00', 128, 'Dinner', 4), | |||||
(146, 'Yogurt', 569.8, 20, 23.5, 13.1, 38.5, 481.2, '2024-11-09 19:34:00', 385, 'Dinner', 4), | |||||
(147, 'Egg', 172.4, 13.9, 12.4, 3.5, 0.9, 137, '2024-11-10 06:41:00', 221, 'Breakfast', 4), | |||||
(148, 'Milk', 218.5, 14.4, 14.4, 7.4, 21, 524.4, '2024-11-10 12:55:00', 437, 'Lunch', 4), | |||||
(149, 'Brown rice', 712.8, 16.5, 9.9, 1.3, 148.5, 0, '2024-11-10 12:55:00', 330, 'Lunch', 4), | |||||
(150, 'Garlic', 324.8, 15.5, 35.7, 7.7, 14.4, 387.4, '2024-11-10 18:24:00', 232, 'Dinner', 4), | |||||
(151, 'Potato', 57.8, 1.5, 0.1, 0, 13, 7.5, '2024-11-10 18:24:00', 75, 'Dinner', 4), | |||||
(152, 'Potato', 60.8, 1.6, 0.1, 0, 13.7, 7.9, '2024-11-04 07:23:00', 79, 'Breakfast', 5), | |||||
(153, 'Tomato', 85, 4.2, 0.9, 0, 18.4, 23.6, '2024-11-04 07:23:00', 472, 'Breakfast', 5), | |||||
(154, 'Sweet potato', 484.8, 7.7, 0.5, 0, 105.6, 14.4, '2024-11-04 11:51:00', 480, 'Lunch', 5), | |||||
(155, 'Lamb', 820.3, 48.8, 64.7, 25.7, 0, 0, '2024-11-04 17:50:00', 279, 'Dinner', 5), | |||||
(156, 'Pork', 301.2, 18.9, 24.6, 9.1, 0, 61.2, '2024-11-05 06:15:00', 125, 'Breakfast', 5), | |||||
(157, 'Bread', 1057.4, 37.5, 18.4, 5.2, 207.5, 598.5, '2024-11-05 06:15:00', 399, 'Breakfast', 5), | |||||
(158, 'Tomato', 85.9, 4.3, 1, 0, 18.6, 23.8, '2024-11-05 11:50:00', 477, 'Lunch', 5), | |||||
(159, 'Pork', 819.4, 51.3, 67, 24.8, 0, 166.6, '2024-11-05 11:50:00', 340, 'Lunch', 5), | |||||
(160, 'Egg', 48.4, 3.9, 3.5, 1, 0.2, 38.4, '2024-11-05 18:51:00', 62, 'Dinner', 5), | |||||
(161, 'Cucumber', 58.1, 2.5, 0.4, 0, 13.8, 7.3, '2024-11-05 18:51:00', 363, 'Dinner', 5), | |||||
(162, 'Garlic', 642.6, 30.8, 70.7, 15.1, 28.5, 766.5, '2024-11-06 08:26:00', 459, 'Breakfast', 5), | |||||
(163, 'Lettuce', 11, 1.1, 0.3, 0.1, 2.3, 6.9, '2024-11-06 08:26:00', 137, 'Breakfast', 5), | |||||
(164, 'Garlic', 253.4, 12.1, 27.9, 6, 11.2, 302.3, '2024-11-06 11:43:00', 181, 'Lunch', 5), | |||||
(165, 'Yogurt', 389.2, 13.7, 16, 8.9, 26.3, 328.8, '2024-11-06 11:43:00', 263, 'Lunch', 5), | |||||
(166, 'Beef', 1125, 99, 94.5, 36, 0, 225, '2024-11-06 18:56:00', 450, 'Dinner', 5), | |||||
(167, 'Brown rice', 382.3, 8.8, 5.3, 0.7, 79.7, 0, '2024-11-07 07:09:00', 177, 'Breakfast', 5), | |||||
(168, 'Avocado', 540.8, 6.8, 49.3, 6.8, 28.7, 23.7, '2024-11-07 13:16:00', 338, 'Lunch', 5), | |||||
(169, 'Broccoli', 154.7, 12.7, 2.7, 0.9, 30, 300.3, '2024-11-07 13:16:00', 455, 'Lunch', 5), | |||||
(170, 'Apple', 215.8, 0, 0, 0, 58.1, 0, '2024-11-07 18:54:00', 415, 'Dinner', 5), | |||||
(171, 'Spinach', 50.1, 5.9, 0.9, 0.2, 7.8, 172.2, '2024-11-08 07:10:00', 218, 'Breakfast', 5), | |||||
(172, 'Broccoli', 24.1, 2, 0.4, 0.1, 4.7, 46.9, '2024-11-08 11:41:00', 71, 'Lunch', 5), | |||||
(173, 'Milk', 189.5, 12.5, 12.5, 6.4, 18.2, 454.8, '2024-11-08 17:13:00', 379, 'Dinner', 5), | |||||
(174, 'Cheese', 1893.4, 97, 155.9, 109.3, 6.1, 0, '2024-11-08 17:13:00', 471, 'Dinner', 5), | |||||
(175, 'Salmon', 253.4, 27.1, 16.7, 4.7, 6.2, 0, '2024-11-09 07:15:00', 123, 'Breakfast', 5), | |||||
(176, 'Lettuce', 34.6, 3.5, 0.9, 0.4, 7.3, 21.6, '2024-11-09 07:15:00', 432, 'Breakfast', 5), | |||||
(177, 'Lettuce', 7.4, 0.7, 0.2, 0.1, 1.6, 4.7, '2024-11-09 12:38:00', 93, 'Lunch', 5), | |||||
(178, 'Spinach', 57.5, 6.8, 1, 0.2, 9, 197.5, '2024-11-09 12:38:00', 250, 'Lunch', 5), | |||||
(179, 'Cucumber', 27, 1.2, 0.2, 0, 6.4, 3.4, '2024-11-09 17:59:00', 169, 'Dinner', 5), | |||||
(180, 'Egg', 81.1, 6.6, 5.8, 1.7, 0.4, 64.5, '2024-11-09 17:59:00', 104, 'Dinner', 5), | |||||
(181, 'Tomato', 45.9, 2.3, 0.5, 0, 9.9, 12.8, '2024-11-10 07:50:00', 255, 'Breakfast', 5), | |||||
(182, 'Tomato', 81.9, 4.1, 0.9, 0, 17.7, 22.8, '2024-11-10 12:02:00', 455, 'Lunch', 5), | |||||
(183, 'Salmon', 379, 40.5, 25, 7, 9.2, 0, '2024-11-10 18:02:00', 184, 'Dinner', 5), | |||||
(184, 'Lamb', 308.7, 18.4, 24.4, 9.7, 0, 0, '2024-11-04 07:46:00', 105, 'Breakfast', 6), | |||||
(185, 'Lamb', 787.9, 46.9, 62.2, 24.7, 0, 0, '2024-11-04 07:46:00', 268, 'Breakfast', 6), | |||||
(186, 'Tomato', 76, 3.8, 0.8, 0, 16.5, 21.1, '2024-11-04 12:48:00', 422, 'Lunch', 6), | |||||
(187, 'Potato', 370.4, 9.6, 0.5, 0, 83.2, 48.1, '2024-11-04 12:48:00', 481, 'Lunch', 6), | |||||
(188, 'Lettuce', 21, 2.1, 0.5, 0.3, 4.5, 13.1, '2024-11-04 18:25:00', 263, 'Dinner', 6), | |||||
(189, 'Avocado', 552, 6.9, 50.4, 6.9, 29.3, 24.2, '2024-11-05 06:11:00', 345, 'Breakfast', 6), | |||||
(190, 'Carrot', 62.7, 1.4, 0.3, 0, 14.7, 105.6, '2024-11-05 11:02:00', 153, 'Lunch', 6), | |||||
(191, 'Yogurt', 134.7, 4.7, 5.6, 3.1, 9.1, 113.8, '2024-11-05 11:02:00', 91, 'Lunch', 6), | |||||
(192, 'Tomato', 78.8, 3.9, 0.9, 0, 17.1, 21.9, '2024-11-05 19:27:00', 438, 'Dinner', 6), | |||||
(193, 'Beef', 340, 29.9, 28.6, 10.9, 0, 68, '2024-11-05 19:27:00', 136, 'Dinner', 6), | |||||
(194, 'Onion', 108.4, 3.8, 0.3, 0, 25.2, 8.1, '2024-11-06 06:42:00', 271, 'Breakfast', 6), | |||||
(195, 'Egg', 350.2, 28.3, 25.1, 7.2, 1.8, 278.4, '2024-11-06 13:46:00', 449, 'Lunch', 6), | |||||
(196, 'Sweet potato', 494.9, 7.8, 0.5, 0, 107.8, 14.7, '2024-11-06 17:34:00', 490, 'Dinner', 6), | |||||
(197, 'Tomato', 83.7, 4.2, 0.9, 0, 18.1, 23.2, '2024-11-06 17:34:00', 465, 'Dinner', 6), | |||||
(198, 'Brown rice', 110.2, 2.5, 1.5, 0.2, 22.9, 0, '2024-11-07 06:48:00', 51, 'Breakfast', 6), | |||||
(199, 'Pasta', 615.7, 25.9, 4.7, 0.9, 122.2, 0, '2024-11-07 06:48:00', 470, 'Breakfast', 6), | |||||
(200, 'Potato', 150.2, 3.9, 0.2, 0, 33.7, 19.5, '2024-11-07 13:42:00', 195, 'Lunch', 6), | |||||
(201, 'Brown rice', 708.5, 16.4, 9.8, 1.3, 147.6, 0, '2024-11-07 13:42:00', 328, 'Lunch', 6), | |||||
(202, 'Lettuce', 25.9, 2.6, 0.6, 0.3, 5.5, 16.2, '2024-11-07 19:44:00', 324, 'Dinner', 6), | |||||
(203, 'Brown rice', 490.3, 11.3, 6.8, 0.9, 102.2, 0, '2024-11-08 08:13:00', 227, 'Breakfast', 6), | |||||
(204, 'Banana', 113.4, 1.4, 0.3, 0.1, 29.2, 1.1, '2024-11-08 08:13:00', 108, 'Breakfast', 6), | |||||
(205, 'Banana', 300.3, 3.7, 0.9, 0.3, 77.2, 2.9, '2024-11-08 12:25:00', 286, 'Lunch', 6), | |||||
(206, 'Pork', 848.3, 53.2, 69.3, 25.7, 0, 172.5, '2024-11-08 18:46:00', 352, 'Dinner', 6), | |||||
(207, 'Cucumber', 75.5, 3.3, 0.5, 0, 17.9, 9.4, '2024-11-09 07:57:00', 472, 'Breakfast', 6), | |||||
(208, 'Sweet potato', 361.6, 5.7, 0.4, 0, 78.8, 10.7, '2024-11-09 12:22:00', 358, 'Lunch', 6), | |||||
(209, 'Lettuce', 8.3, 0.8, 0.2, 0.1, 1.8, 5.2, '2024-11-09 12:22:00', 104, 'Lunch', 6), | |||||
(210, 'Pasta', 200.4, 8.4, 1.5, 0.3, 39.8, 0, '2024-11-09 17:26:00', 153, 'Dinner', 6), | |||||
(211, 'Pasta', 117.9, 5, 0.9, 0.2, 23.4, 0, '2024-11-10 07:29:00', 90, 'Breakfast', 6), | |||||
(212, 'Brown rice', 738.7, 17.1, 10.3, 1.4, 153.9, 0, '2024-11-10 07:29:00', 342, 'Breakfast', 6), | |||||
(213, 'Onion', 55.6, 1.9, 0.1, 0, 12.9, 4.2, '2024-11-10 11:18:00', 139, 'Lunch', 6), | |||||
(214, 'Potato', 338.8, 8.8, 0.4, 0, 76.1, 44, '2024-11-10 18:58:00', 440, 'Dinner', 6), | |||||
(215, 'Bread', 339.2, 12, 5.9, 1.7, 66.6, 192, '2024-11-10 18:58:00', 128, 'Dinner', 6), | |||||
(216, 'Carrot', 145.5, 3.2, 0.7, 0, 34.1, 244.9, '2024-11-04 06:16:00', 355, 'Breakfast', 7), | |||||
(217, 'Bread', 667.8, 23.7, 11.6, 3.3, 131, 378, '2024-11-04 13:58:00', 252, 'Lunch', 7), | |||||
(218, 'Tomato', 39.4, 2, 0.4, 0, 8.5, 10.9, '2024-11-04 13:58:00', 219, 'Lunch', 7), | |||||
(219, 'Cheese', 1234.1, 63.2, 101.6, 71.2, 4, 0, '2024-11-04 18:34:00', 307, 'Dinner', 7), | |||||
(220, 'Chicken thigh', 933.8, 128, 70.6, 24.6, 0, 0, '2024-11-04 18:34:00', 474, 'Dinner', 7), | |||||
(221, 'Banana', 155.4, 1.9, 0.4, 0.1, 40, 1.5, '2024-11-05 07:24:00', 148, 'Breakfast', 7), | |||||
(222, 'Yogurt', 464.7, 16.3, 19.2, 10.7, 31.4, 392.5, '2024-11-05 11:29:00', 314, 'Lunch', 7), | |||||
(223, 'Beef', 367.5, 32.3, 30.9, 11.8, 0, 73.5, '2024-11-05 11:29:00', 147, 'Lunch', 7), | |||||
(224, 'Yogurt', 122.8, 4.3, 5.1, 2.8, 8.3, 103.8, '2024-11-05 17:20:00', 83, 'Dinner', 7), | |||||
(225, 'Apple', 144, 0, 0, 0, 38.8, 0, '2024-11-06 07:30:00', 277, 'Breakfast', 7), | |||||
(226, 'Beef', 840, 73.9, 70.6, 26.9, 0, 168, '2024-11-06 07:30:00', 336, 'Breakfast', 7), | |||||
(227, 'Garlic', 522.2, 25, 57.4, 12.3, 23.1, 622.9, '2024-11-06 12:35:00', 373, 'Lunch', 7), | |||||
(228, 'Chicken thigh', 823.5, 112.9, 62.3, 21.7, 0, 0, '2024-11-06 12:35:00', 418, 'Lunch', 7), | |||||
(229, 'Salmon', 115.4, 12.3, 7.6, 2.1, 2.8, 0, '2024-11-06 17:54:00', 56, 'Dinner', 7), | |||||
(230, 'Tomato', 37.1, 1.9, 0.4, 0, 8, 10.3, '2024-11-07 06:25:00', 206, 'Breakfast', 7), | |||||
(231, 'Avocado', 537.6, 6.7, 49.1, 6.7, 28.6, 23.5, '2024-11-07 12:48:00', 336, 'Lunch', 7), | |||||
(232, 'Broccoli', 32, 2.6, 0.6, 0.2, 6.2, 62, '2024-11-07 12:48:00', 94, 'Lunch', 7), | |||||
(233, 'Brown rice', 477.4, 11.1, 6.6, 0.9, 99.5, 0, '2024-11-07 17:31:00', 221, 'Dinner', 7), | |||||
(234, 'Cucumber', 72.3, 3.2, 0.5, 0, 17.2, 9, '2024-11-08 07:09:00', 452, 'Breakfast', 7), | |||||
(235, 'Garlic', 512.4, 24.5, 56.4, 12.1, 22.7, 611.2, '2024-11-08 11:58:00', 366, 'Lunch', 7), | |||||
(236, 'Chicken thigh', 240.3, 32.9, 18.2, 6.3, 0, 0, '2024-11-08 11:58:00', 122, 'Lunch', 7), | |||||
(237, 'Onion', 137.2, 4.8, 0.3, 0, 31.9, 10.3, '2024-11-08 19:26:00', 343, 'Dinner', 7), | |||||
(238, 'Pork', 607.3, 38.1, 49.6, 18.4, 0, 123.5, '2024-11-08 19:26:00', 252, 'Dinner', 7), | |||||
(239, 'Banana', 297.2, 3.7, 0.8, 0.3, 76.4, 2.8, '2024-11-09 07:33:00', 283, 'Breakfast', 7), | |||||
(240, 'Chicken breast', 790.4, 148.5, 29.2, 9.6, 0, 330.5, '2024-11-09 07:33:00', 479, 'Breakfast', 7), | |||||
(241, 'Lamb', 311.6, 18.6, 24.6, 9.8, 0, 0, '2024-11-09 13:15:00', 106, 'Lunch', 7), | |||||
(242, 'Chicken thigh', 784.1, 107.5, 59.3, 20.7, 0, 0, '2024-11-09 13:15:00', 398, 'Lunch', 7), | |||||
(243, 'Apple', 116, 0, 0, 0, 31.2, 0, '2024-11-09 18:17:00', 223, 'Dinner', 7), | |||||
(244, 'Salmon', 945.5, 101, 62.4, 17.4, 22.9, 0, '2024-11-09 18:17:00', 459, 'Dinner', 7), | |||||
(245, 'Banana', 498.8, 6.2, 1.4, 0.5, 128.2, 4.8, '2024-11-10 06:40:00', 475, 'Breakfast', 7), | |||||
(246, 'Lamb', 1111.3, 66.1, 87.7, 34.8, 0, 0, '2024-11-10 11:17:00', 378, 'Lunch', 7), | |||||
(247, 'Avocado', 475.2, 5.9, 43.4, 5.9, 25.2, 20.8, '2024-11-10 11:17:00', 297, 'Lunch', 7), | |||||
(248, 'Banana', 183.8, 2.3, 0.5, 0.2, 47.2, 1.8, '2024-11-10 17:29:00', 175, 'Dinner', 7), | |||||
(249, 'Onion', 119.6, 4.2, 0.3, 0, 27.8, 9, '2024-11-04 07:58:00', 299, 'Breakfast', 8), | |||||
(250, 'Beef', 465, 40.9, 39.1, 14.9, 0, 93, '2024-11-04 13:10:00', 186, 'Lunch', 8), | |||||
(251, 'Bread', 871.9, 30.9, 15.1, 4.3, 171.1, 493.5, '2024-11-04 19:57:00', 329, 'Dinner', 8), | |||||
(252, 'Lamb', 884.9, 52.7, 69.8, 27.7, 0, 0, '2024-11-05 06:10:00', 301, 'Breakfast', 8), | |||||
(253, 'Milk', 230, 15.2, 15.2, 7.8, 22.1, 552, '2024-11-05 06:10:00', 460, 'Breakfast', 8), | |||||
(254, 'Lettuce', 35.8, 3.6, 0.9, 0.4, 7.6, 22.4, '2024-11-05 11:42:00', 448, 'Lunch', 8), | |||||
(255, 'Salmon', 786.9, 84, 52, 14.5, 19.1, 0, '2024-11-05 11:42:00', 382, 'Lunch', 8), | |||||
(256, 'Beef', 535, 47.1, 44.9, 17.1, 0, 107, '2024-11-05 19:16:00', 214, 'Dinner', 8), | |||||
(257, 'Cucumber', 71.2, 3.1, 0.4, 0, 16.9, 8.9, '2024-11-06 08:21:00', 445, 'Breakfast', 8), | |||||
(258, 'Chicken thigh', 396, 54.3, 29.9, 10.5, 0, 0, '2024-11-06 08:21:00', 201, 'Breakfast', 8), | |||||
(259, 'Chicken breast', 513.1, 96.4, 19, 6.2, 0, 214.6, '2024-11-06 12:27:00', 311, 'Lunch', 8), | |||||
(260, 'Sweet potato', 212.1, 3.4, 0.2, 0, 46.2, 6.3, '2024-11-06 18:02:00', 210, 'Dinner', 8), | |||||
(261, 'Chicken thigh', 439.3, 60.2, 33.2, 11.6, 0, 0, '2024-11-06 18:02:00', 223, 'Dinner', 8), | |||||
(262, 'Sweet potato', 211.1, 3.3, 0.2, 0, 46, 6.3, '2024-11-07 07:56:00', 209, 'Breakfast', 8), | |||||
(263, 'Pasta', 94.3, 4, 0.7, 0.1, 18.7, 0, '2024-11-07 07:56:00', 72, 'Breakfast', 8), | |||||
(264, 'Spinach', 74.5, 8.7, 1.3, 0.3, 11.7, 256, '2024-11-07 11:35:00', 324, 'Lunch', 8), | |||||
(265, 'Chicken breast', 669.9, 125.9, 24.8, 8.1, 0, 280.1, '2024-11-07 18:49:00', 406, 'Dinner', 8), | |||||
(266, 'Cheese', 888.4, 45.5, 73.2, 51.3, 2.9, 0, '2024-11-08 07:19:00', 221, 'Breakfast', 8), | |||||
(267, 'Potato', 168.6, 4.4, 0.2, 0, 37.9, 21.9, '2024-11-08 07:19:00', 219, 'Breakfast', 8), | |||||
(268, 'Banana', 203.7, 2.5, 0.6, 0.2, 52.4, 1.9, '2024-11-08 12:42:00', 194, 'Lunch', 8), | |||||
(269, 'Yogurt', 284.2, 10, 11.7, 6.5, 19.2, 240, '2024-11-08 12:42:00', 192, 'Lunch', 8), | |||||
(270, 'Sweet potato', 403, 6.4, 0.4, 0, 87.8, 12, '2024-11-08 18:37:00', 399, 'Dinner', 8), | |||||
(271, 'Chicken breast', 785.4, 147.6, 29, 9.5, 0, 328.4, '2024-11-09 07:08:00', 476, 'Breakfast', 8), | |||||
(272, 'Avocado', 612.8, 7.7, 55.9, 7.7, 32.6, 26.8, '2024-11-09 07:08:00', 383, 'Breakfast', 8), | |||||
(273, 'Egg', 131, 10.6, 9.4, 2.7, 0.7, 104.2, '2024-11-09 12:47:00', 168, 'Lunch', 8), | |||||
(274, 'Lettuce', 20.7, 2.1, 0.5, 0.3, 4.4, 12.9, '2024-11-09 12:47:00', 259, 'Lunch', 8), | |||||
(275, 'Salmon', 222.5, 23.8, 14.7, 4.1, 5.4, 0, '2024-11-09 18:20:00', 108, 'Dinner', 8), | |||||
(276, 'Spinach', 111.3, 13.1, 1.9, 0.5, 17.4, 382.4, '2024-11-10 06:56:00', 484, 'Breakfast', 8), | |||||
(277, 'Garlic', 460.6, 22, 50.7, 10.9, 20.4, 549.4, '2024-11-10 11:47:00', 329, 'Lunch', 8), | |||||
(278, 'Lamb', 643.9, 38.3, 50.8, 20.1, 0, 0, '2024-11-10 19:54:00', 219, 'Dinner', 8), | |||||
(279, 'Beef', 1125, 99, 94.5, 36, 0, 225, '2024-11-10 19:54:00', 450, 'Dinner', 8), | |||||
(280, 'Lamb', 929, 55.3, 73.3, 29.1, 0, 0, '2024-11-04 07:54:00', 316, 'Breakfast', 9), | |||||
(281, 'Pork', 443.4, 27.8, 36.2, 13.4, 0, 90.2, '2024-11-04 12:05:00', 184, 'Lunch', 9), | |||||
(282, 'Beef', 885, 77.9, 74.3, 28.3, 0, 177, '2024-11-04 12:05:00', 354, 'Lunch', 9), | |||||
(283, 'Brown rice', 276.5, 6.4, 3.8, 0.5, 57.6, 0, '2024-11-04 18:57:00', 128, 'Dinner', 9), | |||||
(284, 'Banana', 265.6, 3.3, 0.8, 0.3, 68.3, 2.5, '2024-11-04 18:57:00', 253, 'Dinner', 9), | |||||
(285, 'Bread', 1298.5, 46.1, 22.5, 6.4, 254.8, 735, '2024-11-05 07:40:00', 490, 'Breakfast', 9), | |||||
(286, 'Milk', 105, 6.9, 6.9, 3.6, 10.1, 252, '2024-11-05 07:40:00', 210, 'Breakfast', 9), | |||||
(287, 'Pasta', 531.9, 22.3, 4.1, 0.8, 105.6, 0, '2024-11-05 12:21:00', 406, 'Lunch', 9), | |||||
(288, 'Sweet potato', 169.7, 2.7, 0.2, 0, 37, 5, '2024-11-05 12:21:00', 168, 'Lunch', 9), | |||||
(289, 'Onion', 198.8, 7, 0.5, 0, 46.2, 14.9, '2024-11-05 19:11:00', 497, 'Dinner', 9), | |||||
(290, 'Avocado', 140.8, 1.8, 12.8, 1.8, 7.5, 6.2, '2024-11-05 19:11:00', 88, 'Dinner', 9), | |||||
(291, 'Lamb', 423.4, 25.2, 33.4, 13.2, 0, 0, '2024-11-06 07:39:00', 144, 'Breakfast', 9), | |||||
(292, 'Bread', 800.3, 28.4, 13.9, 3.9, 157, 453, '2024-11-06 13:54:00', 302, 'Lunch', 9), | |||||
(293, 'Carrot', 37.3, 0.8, 0.2, 0, 8.7, 62.8, '2024-11-06 13:54:00', 91, 'Lunch', 9), | |||||
(294, 'Broccoli', 49.3, 4.1, 0.9, 0.3, 9.6, 95.7, '2024-11-06 17:03:00', 145, 'Dinner', 9), | |||||
(295, 'Carrot', 123.4, 2.7, 0.6, 0, 28.9, 207.7, '2024-11-06 17:03:00', 301, 'Dinner', 9), | |||||
(296, 'Chicken thigh', 855, 117.2, 64.7, 22.6, 0, 0, '2024-11-07 08:12:00', 434, 'Breakfast', 9), | |||||
(297, 'Chicken breast', 585.8, 110, 21.7, 7.1, 0, 244.9, '2024-11-07 08:12:00', 355, 'Breakfast', 9), | |||||
(298, 'Salmon', 931.1, 99.4, 61.5, 17.2, 22.6, 0, '2024-11-07 12:45:00', 452, 'Lunch', 9), | |||||
(299, 'Bread', 556.5, 19.7, 9.7, 2.7, 109.2, 315, '2024-11-07 12:45:00', 210, 'Lunch', 9), | |||||
(300, 'Carrot', 96.8, 2.1, 0.5, 0, 22.7, 162.8, '2024-11-07 17:14:00', 236, 'Dinner', 9), | |||||
(301, 'Chicken thigh', 382.2, 52.4, 28.9, 10.1, 0, 0, '2024-11-08 06:20:00', 194, 'Breakfast', 9), | |||||
(302, 'Yogurt', 679.3, 23.9, 28, 15.6, 45.9, 573.8, '2024-11-08 06:20:00', 459, 'Breakfast', 9), | |||||
(303, 'Lettuce', 23.2, 2.3, 0.6, 0.3, 4.9, 14.5, '2024-11-08 13:27:00', 290, 'Lunch', 9), | |||||
(304, 'Lettuce', 28.4, 2.8, 0.7, 0.4, 6, 17.8, '2024-11-08 13:27:00', 355, 'Lunch', 9), | |||||
(305, 'Spinach', 77.7, 9.1, 1.4, 0.3, 12.2, 267, '2024-11-08 19:43:00', 338, 'Dinner', 9), | |||||
(306, 'Banana', 420, 5.2, 1.2, 0.4, 108, 4, '2024-11-09 06:39:00', 400, 'Breakfast', 9), | |||||
(307, 'Banana', 475.7, 5.9, 1.4, 0.5, 122.3, 4.5, '2024-11-09 12:24:00', 453, 'Lunch', 9), | |||||
(308, 'Beef', 1110, 97.7, 93.2, 35.5, 0, 222, '2024-11-09 17:23:00', 444, 'Dinner', 9), | |||||
(309, 'Lettuce', 36.2, 3.6, 0.9, 0.5, 7.7, 22.6, '2024-11-09 17:23:00', 452, 'Dinner', 9), | |||||
(310, 'Chicken thigh', 979.1, 134.2, 74.1, 25.8, 0, 0, '2024-11-10 07:24:00', 497, 'Breakfast', 9), | |||||
(311, 'Broccoli', 154.7, 12.7, 2.7, 0.9, 30, 300.3, '2024-11-10 07:24:00', 455, 'Breakfast', 9), | |||||
(312, 'Egg', 84.2, 6.8, 6, 1.7, 0.4, 67, '2024-11-10 12:42:00', 108, 'Lunch', 9), | |||||
(313, 'Pork', 903.8, 56.6, 73.9, 27.4, 0, 183.8, '2024-11-10 17:50:00', 375, 'Dinner', 9), | |||||
(314, 'Avocado', 348.8, 4.4, 31.8, 4.4, 18.5, 15.3, '2024-11-04 07:54:00', 218, 'Breakfast', 10), | |||||
(315, 'Spinach', 87.9, 10.3, 1.5, 0.4, 13.8, 301.8, '2024-11-04 07:54:00', 382, 'Breakfast', 10), | |||||
(316, 'Carrot', 203.4, 4.5, 1, 0, 47.6, 342.2, '2024-11-04 12:17:00', 496, 'Lunch', 10), | |||||
(317, 'Cucumber', 47.8, 2.1, 0.3, 0, 11.4, 6, '2024-11-04 12:17:00', 299, 'Lunch', 10), | |||||
(318, 'Yogurt', 217.6, 7.6, 9, 5, 14.7, 183.8, '2024-11-04 19:25:00', 147, 'Dinner', 10), | |||||
(319, 'Avocado', 281.6, 3.5, 25.7, 3.5, 15, 12.3, '2024-11-04 19:25:00', 176, 'Dinner', 10), | |||||
(320, 'Sweet potato', 168.7, 2.7, 0.2, 0, 36.7, 5, '2024-11-05 08:55:00', 167, 'Breakfast', 10), | |||||
(321, 'Milk', 187, 12.3, 12.3, 6.4, 18, 448.8, '2024-11-05 13:51:00', 374, 'Lunch', 10), | |||||
(322, 'Sweet potato', 95.9, 1.5, 0.1, 0, 20.9, 2.8, '2024-11-05 18:32:00', 95, 'Dinner', 10), | |||||
(323, 'Salmon', 883.7, 94.4, 58.3, 16.3, 21.4, 0, '2024-11-06 06:57:00', 429, 'Breakfast', 10), | |||||
(324, 'Yogurt', 125.8, 4.4, 5.2, 2.9, 8.5, 106.2, '2024-11-06 06:57:00', 85, 'Breakfast', 10), | |||||
(325, 'Cheese', 1949.7, 99.9, 160.5, 112.5, 6.3, 0, '2024-11-06 11:31:00', 485, 'Lunch', 10), | |||||
(326, 'Broccoli', 32, 2.6, 0.6, 0.2, 6.2, 62, '2024-11-06 11:31:00', 94, 'Lunch', 10), | |||||
(327, 'Sweet potato', 99, 1.6, 0.1, 0, 21.6, 2.9, '2024-11-06 18:01:00', 98, 'Dinner', 10), | |||||
(328, 'Broccoli', 133.3, 11, 2.4, 0.8, 25.9, 258.7, '2024-11-06 18:01:00', 392, 'Dinner', 10), | |||||
(329, 'Pasta', 615.7, 25.9, 4.7, 0.9, 122.2, 0, '2024-11-07 06:30:00', 470, 'Breakfast', 10), | |||||
(330, 'Banana', 113.4, 1.4, 0.3, 0.1, 29.2, 1.1, '2024-11-07 06:30:00', 108, 'Breakfast', 10), | |||||
(331, 'Bread', 429.3, 15.2, 7.5, 2.1, 84.2, 243, '2024-11-07 11:27:00', 162, 'Lunch', 10), | |||||
(332, 'Bread', 927.5, 32.9, 16.1, 4.5, 182, 525, '2024-11-07 11:27:00', 350, 'Lunch', 10), | |||||
(333, 'Brown rice', 995.8, 23.1, 13.8, 1.8, 207.5, 0, '2024-11-07 19:52:00', 461, 'Dinner', 10), | |||||
(334, 'Potato', 325.7, 8.5, 0.4, 0, 73.2, 42.3, '2024-11-08 06:05:00', 423, 'Breakfast', 10), | |||||
(335, 'Egg', 43.7, 3.5, 3.1, 0.9, 0.2, 34.7, '2024-11-08 12:47:00', 56, 'Lunch', 10), | |||||
(336, 'Potato', 139.4, 3.6, 0.2, 0, 31.3, 18.1, '2024-11-08 12:47:00', 181, 'Lunch', 10), | |||||
(337, 'Yogurt', 722.2, 25.4, 29.8, 16.6, 48.8, 610, '2024-11-08 19:02:00', 488, 'Dinner', 10), | |||||
(338, 'Egg', 373.6, 30.2, 26.8, 7.7, 1.9, 297, '2024-11-08 19:02:00', 479, 'Dinner', 10), | |||||
(339, 'Pasta', 313.1, 13.1, 2.4, 0.5, 62.1, 0, '2024-11-09 06:07:00', 239, 'Breakfast', 10), | |||||
(340, 'Egg', 213.7, 17.3, 15.3, 4.4, 1.1, 169.9, '2024-11-09 06:07:00', 274, 'Breakfast', 10), | |||||
(341, 'Garlic', 254.8, 12.2, 28, 6, 11.3, 303.9, '2024-11-09 11:31:00', 182, 'Lunch', 10), | |||||
(342, 'Sweet potato', 388.9, 6.2, 0.4, 0, 84.7, 11.6, '2024-11-09 11:31:00', 385, 'Lunch', 10), | |||||
(343, 'Banana', 158.6, 2, 0.5, 0.2, 40.8, 1.5, '2024-11-09 19:46:00', 151, 'Dinner', 10), | |||||
(344, 'Tomato', 15.7, 0.8, 0.2, 0, 3.4, 4.3, '2024-11-10 08:40:00', 87, 'Breakfast', 10), | |||||
(345, 'Carrot', 44.7, 1, 0.2, 0, 10.5, 75.2, '2024-11-10 12:45:00', 109, 'Lunch', 10), | |||||
(346, 'Sweet potato', 170.7, 2.7, 0.2, 0, 37.2, 5.1, '2024-11-10 19:16:00', 169, 'Dinner', 10), | |||||
(347, 'Egg', 624, 50.4, 44.8, 12.8, 3.2, 496, '2024-11-14 08:57:54', 800, 'Breakfast', 11), | |||||
(348, 'Spinach', 690, 81, 12, 3, 108, 2370, '2024-11-14 08:58:17', 3000, 'Dinner', 11), | |||||
(349, 'Chicken breast', 1650, 310, 61, 20, 10, 690, '2024-11-28 11:05:49', 1000, 'Breakfast', 1), | |||||
(350, 'Chicken breast', 1725.9, 324.26, 63.806, 20.92, 10.46, 721.74, '2024-11-28 15:04:46', 1046, 'Breakfast', 1); | |||||
ALTER TABLE `food_items` | |||||
ADD PRIMARY KEY (`id`), | |||||
ADD KEY `user_id` (`user_id`); | |||||
ALTER TABLE `food_items` | |||||
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=351; | |||||
/* | |||||
ALTER TABLE `food_items` | |||||
ADD CONSTRAINT `food_items_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`); | |||||
*/ |
@@ -0,0 +1,11 @@ | |||||
--liquibase formatted sql | |||||
--changeset terence:alter-food_items-table | |||||
--comment: Alter table | |||||
Alter TABLE `fhsmscdb`.`food_items` | |||||
add `created` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, | |||||
add `createdBy` int DEFAULT NULL, | |||||
add `version` int NOT NULL DEFAULT '0', | |||||
add `modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, | |||||
add `modifiedBy` int DEFAULT NULL, | |||||
add `deleted` tinyint(1) NOT NULL DEFAULT '0'; |
@@ -0,0 +1,12 @@ | |||||
--liquibase formatted sql | |||||
--changeset terence:alter-food_items-table | |||||
--comment: Alter table | |||||
ALTER TABLE `food_items` | |||||
CHANGE COLUMN `kcal` `kcal` DECIMAL(14,2) NULL DEFAULT NULL , | |||||
CHANGE COLUMN `protein` `protein` DECIMAL(14,2) NULL DEFAULT NULL , | |||||
CHANGE COLUMN `fat` `fat` DECIMAL(14,2) NULL DEFAULT NULL , | |||||
CHANGE COLUMN `sat_fat` `sat_fat` DECIMAL(14,2) NULL DEFAULT NULL , | |||||
CHANGE COLUMN `carbo` `carbo` DECIMAL(14,2) NULL DEFAULT NULL , | |||||
CHANGE COLUMN `sodium` `sodium` DECIMAL(14,2) NULL DEFAULT NULL , | |||||
CHANGE COLUMN `size` `size` DECIMAL(14,2) NULL DEFAULT NULL ; |
@@ -0,0 +1,12 @@ | |||||
--liquibase formatted sql | |||||
--changeset cyril:alter food items | |||||
--comment: alter food items | |||||
ALTER TABLE `food_items` | |||||
CHANGE COLUMN `created` `created` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP AFTER `id`, | |||||
CHANGE COLUMN `createdBy` `createdBy` INT NULL DEFAULT NULL AFTER `created`, | |||||
CHANGE COLUMN `version` `version` INT NOT NULL DEFAULT '0' AFTER `createdBy`, | |||||
CHANGE COLUMN `modified` `modified` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP AFTER `version`, | |||||
CHANGE COLUMN `modifiedBy` `modifiedBy` INT NULL DEFAULT NULL AFTER `modified`, | |||||
CHANGE COLUMN `deleted` `deleted` TINYINT(1) NOT NULL DEFAULT '0' AFTER `modifiedBy`; |
@@ -0,0 +1,18 @@ | |||||
--liquibase formatted sql | |||||
--changeset terence:create-table-and-insert-data | |||||
--comment: Create table and insert data | |||||
-- Create table structure | |||||
CREATE TABLE `user_information` ( | |||||
`id` int(11) NOT NULL, | |||||
`user_id` int(11) NOT NULL, | |||||
`gender` varchar(10) DEFAULT NULL, | |||||
`name` varchar(50) DEFAULT NULL, | |||||
`date_of_birth` date DEFAULT NULL, | |||||
`height` varchar(20) DEFAULT NULL, | |||||
`weight` varchar(20) DEFAULT NULL, | |||||
`allergy` varchar(50) DEFAULT NULL, | |||||
`goal` varchar(20) DEFAULT NULL, | |||||
`experience` varchar(20) DEFAULT NULL, | |||||
`created_at` timestamp NOT NULL DEFAULT current_timestamp() | |||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; |
@@ -0,0 +1,20 @@ | |||||
--liquibase formatted sql | |||||
--changeset terence:create-table-and-insert-data | |||||
--comment: Alter table and insert data | |||||
INSERT INTO `user_information` (`id`, `user_id`, `gender`, `name`, `date_of_birth`, `height`, `weight`, `allergy`, `goal`, `experience`, `created_at`) VALUES | |||||
(2, 1, 'Male', 'test', '2000-01-01', '175 cm', '61 kg', 'Peanuts', 'Muscle Gain', 'Expert', '2024-11-13 09:23:46'), | |||||
(3, 3, 'Male', 'm2', '2003-01-01', '162 cm', '80 kg', 'Egg', 'Muscle Gain', 'Intermediate', '2024-11-13 17:18:38'), | |||||
(4, 2, 'Male', 'm1', '2000-01-01', '162 cm', '53 kg', 'Fish', 'Muscle Gain', 'Expert', '2024-11-13 17:25:06'), | |||||
(5, 4, 'Male', 'm3', '2018-01-01', '164 cm', '125 lbs', 'Fish, Peanuts, Wheat', 'Muscle Gain', 'Intermediate', '2024-11-13 17:28:51'), | |||||
(6, 5, 'Male', 'm4', '2008-12-15', '169 cm', '108 kg', 'Peanuts, Fish', 'Nutrition', 'Beginner', '2024-11-13 17:32:53'), | |||||
(7, 6, 'Female', 'g1', '2015-01-01', '158 cm', '46 kg', 'Egg, Fish, Peanuts, Wheat, Soy, Milk', 'Muscle Gain', 'Expert', '2024-11-13 17:35:00'), | |||||
(8, 10, 'Female', 'g5', '1992-05-01', '213 cm', '140 kg', 'None', 'Muscle Gain', 'Beginner', '2024-11-13 17:37:00'), | |||||
(9, 9, 'Female', 'g4', '1989-01-01', '4 ft 11 in', '54 kg', 'Wheat', 'Nutrition', 'Beginner', '2024-11-13 17:37:25'), | |||||
(10, 8, 'Female', 'g3', '2006-06-03', '6 ft 4 in', '89 lbs', 'Egg', 'Diet', 'Intermediate', '2024-11-13 17:38:21'), | |||||
(11, 7, 'Female', 'g2', '2000-01-01', '170 cm', '60 kg', 'None', 'Diet', 'Beginner', '2024-11-13 17:38:46'), | |||||
(12, 11, 'Male', 'example', '2022-07-01', '171 cm', '54 kg', 'Peanuts, Wheat', 'Diet', 'Intermediate', '2024-11-14 08:58:59'); | |||||
ALTER TABLE `user_information` | |||||
ADD PRIMARY KEY (`id`), | |||||
ADD KEY `user_id` (`user_id`); |
@@ -0,0 +1,6 @@ | |||||
--liquibase formatted sql | |||||
--changeset terence:alter-user-table | |||||
--comment: Alter table | |||||
ALTER TABLE `fhsmscdb`.`user` | |||||
ADD `has_information` TINYINT NOT NULL DEFAULT 0; |
@@ -0,0 +1,11 @@ | |||||
--liquibase formatted sql | |||||
--changeset terence:alter-user_information-table | |||||
--comment: Alter table | |||||
Alter TABLE `fhsmscdb`.`user_information` | |||||
add `created` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, | |||||
add `createdBy` int DEFAULT NULL, | |||||
add `version` int NOT NULL DEFAULT '0', | |||||
add `modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, | |||||
add `modifiedBy` int DEFAULT NULL, | |||||
add `deleted` tinyint(1) NOT NULL DEFAULT '0'; |
@@ -0,0 +1,6 @@ | |||||
--liquibase formatted sql | |||||
--changeset terence:alter-user_information-table | |||||
--comment: Alter table | |||||
Alter TABLE `fhsmscdb`.`user_information` | |||||
DROP COLUMN `created_at`; |
@@ -0,0 +1,6 @@ | |||||
--liquibase formatted sql | |||||
--changeset terence:alter-user_information-table | |||||
--comment: Alter table | |||||
Alter TABLE `fhsmscdb`.`user_information` | |||||
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=27; |
@@ -0,0 +1,7 @@ | |||||
--liquibase formatted sql | |||||
--changeset terence:alter-user_information-table | |||||
--comment: Alter table | |||||
Alter TABLE `fhsmscdb`.`user_information` | |||||
MODIFY `age` int DEFAULT NULL, | |||||
add `activityLevel` varchar(20) DEFAULT NULL; |
@@ -0,0 +1,6 @@ | |||||
--liquibase formatted sql | |||||
--changeset terence:alter-user_information-table | |||||
--comment: Alter table | |||||
Alter TABLE `fhsmscdb`.`user_information` | |||||
MODIFY `activityLevel` varchar(20) DEFAULT NULL; |
@@ -0,0 +1,7 @@ | |||||
--liquibase formatted sql | |||||
--changeset terence:alter-user_information-table | |||||
--comment: Alter table | |||||
Alter TABLE `fhsmscdb`.`user_information` | |||||
MODIFY COLUMN `age` int DEFAULT NULL AFTER `gender`, | |||||
MODIFY COLUMN `activityLevel` varchar(20) DEFAULT NULL AFTER `experience`; |
@@ -0,0 +1,25 @@ | |||||
--liquibase formatted sql | |||||
--changeset terence:alter-food1-table | |||||
--comment: Alter table | |||||
-- 添加新列 | |||||
Alter TABLE `fhsmscdb`.`food1` | |||||
ADD COLUMN `Weight (g)` decimal(10,2) DEFAULT NULL, | |||||
ADD COLUMN `contains_egg` tinyint DEFAULT 3, -- 0:●(使用) 1:○(油) 2:▲(接触) 3:×(未使用) | |||||
ADD COLUMN `contains_milk` tinyint DEFAULT 3, | |||||
ADD COLUMN `contains_wheat` tinyint DEFAULT 3, | |||||
ADD COLUMN `contains_shrimp` tinyint DEFAULT 3, | |||||
ADD COLUMN `contains_crab` tinyint DEFAULT 3, | |||||
ADD COLUMN `contains_buckwheat` tinyint DEFAULT 3, | |||||
ADD COLUMN `contains_peanut` tinyint DEFAULT 3, | |||||
ADD COLUMN `contains_walnut` tinyint DEFAULT 3; | |||||
-- 重命名现有列以添加单位 | |||||
ALTER TABLE `fhsmscdb`.`food1` | |||||
CHANGE COLUMN `kcal` `Calories (kcal)` decimal(10,2), | |||||
CHANGE COLUMN `protein` `Protein (g)` decimal(10,2), | |||||
CHANGE COLUMN `fat` `Fat (g)` decimal(10,2), | |||||
DROP COLUMN `satFat`, | |||||
CHANGE COLUMN `carbo` `Carbohydrate (g)` decimal(10,2), | |||||
CHANGE COLUMN `sodium` `Sodium (mg)` decimal(10,2); | |||||
@@ -0,0 +1,11 @@ | |||||
--liquibase formatted sql | |||||
--changeset terence:alter-food_items-table | |||||
--comment: Alter table | |||||
-- 重命名现有列以添加单位 | |||||
ALTER TABLE `fhsmscdb`.`food_items` | |||||
DROP COLUMN `sat_fat`; | |||||
@@ -0,0 +1,16 @@ | |||||
--liquibase formatted sql | |||||
--changeset terence:alter-food1-table | |||||
--comment: Alter table | |||||
-- 添加新列 | |||||
Alter TABLE `fhsmscdb`.`food1` | |||||
ADD COLUMN `Postassium (mg)` decimal(10,2) DEFAULT 0, -- 0:●(使用) 1:○(油) 2:▲(接触) 3:×(未使用) | |||||
ADD COLUMN `Calcium (mg)`decimal(10,2) DEFAULT 0, | |||||
ADD COLUMN `Phosphorus (mg)` decimal(10,2) DEFAULT 0, | |||||
ADD COLUMN `Iron (mg)` decimal(10,2) DEFAULT 0, | |||||
ADD COLUMN `Vitamin A (μg)` decimal(10,2) DEFAULT 0, | |||||
ADD COLUMN `Vitamin B1 (mg)` decimal(10,2) DEFAULT 0, | |||||
ADD COLUMN `Vitamin B2 (mg)` decimal(10,2) DEFAULT 0, | |||||
ADD COLUMN `Niacin (mg)` decimal(10,2) DEFAULT 0, | |||||
ADD COLUMN `Vitamin C (mg)` decimal(10,2) DEFAULT 0; | |||||
@@ -0,0 +1,17 @@ | |||||
--liquibase formatted sql | |||||
--changeset terence:alter-food1-table | |||||
--comment: Alter table | |||||
-- 添加新列 | |||||
Alter TABLE `fhsmscdb`.`food1` | |||||
DROP COLUMN `Ingredients`; | |||||
ALTER TABLE `fhsmscdb`.`food1` | |||||
MODIFY COLUMN `Postassium (mg)` decimal(10,2) DEFAULT 0 AFTER `Sodium (mg)`, | |||||
MODIFY COLUMN `Calcium (mg)` decimal(10,2) DEFAULT 0 AFTER `Postassium (mg)`, | |||||
MODIFY COLUMN `Phosphorus (mg)` decimal(10,2) DEFAULT 0 AFTER `Calcium (mg)`, | |||||
MODIFY COLUMN `Iron (mg)` decimal(10,2) DEFAULT 0 AFTER `Phosphorus (mg)`, | |||||
MODIFY COLUMN `Vitamin A (μg)` decimal(10,2) DEFAULT 0 AFTER `Iron (mg)`, | |||||
MODIFY COLUMN `Vitamin B1 (mg)` decimal(10,2) DEFAULT 0 AFTER `Vitamin A (μg)`, | |||||
MODIFY COLUMN `Vitamin B2 (mg)` decimal(10,2) DEFAULT 0 AFTER `Vitamin B1 (mg)`, | |||||
MODIFY COLUMN `Niacin (mg)` decimal(10,2) DEFAULT 0 AFTER `Vitamin B2 (mg)`, | |||||
MODIFY COLUMN `Vitamin C (mg)` decimal(10,2)DEFAULT 0 AFTER `Niacin (mg)`; |
@@ -0,0 +1,27 @@ | |||||
--liquibase formatted sql | |||||
--changeset terence:alter-food_items-table | |||||
--comment: Alter table | |||||
-- 添加新列 | |||||
/* | |||||
Alter TABLE `fhsmscdb`.`food_items` | |||||
ADD COLUMN `potassium` decimal(10,2) DEFAULT 0, -- 0:●(使用) 1:○(油) 2:▲(接触) 3:×(未使用) | |||||
ADD COLUMN `calcium`decimal(10,2) DEFAULT 0, | |||||
ADD COLUMN `phosphorus` decimal(10,2) DEFAULT 0, | |||||
ADD COLUMN `iron` decimal(10,2) DEFAULT 0, | |||||
ADD COLUMN `vitaminA` decimal(10,2) DEFAULT 0, | |||||
ADD COLUMN `vitaminB1` decimal(10,2) DEFAULT 0, | |||||
ADD COLUMN `vitaminB2` decimal(10,2) DEFAULT 0, | |||||
ADD COLUMN `niacin` decimal(10,2) DEFAULT 0, | |||||
ADD COLUMN `vitaminC` decimal(10,2) DEFAULT 0; | |||||
*/ | |||||
ALTER TABLE `fhsmscdb`.`food_items` | |||||
MODIFY COLUMN `potassium` decimal(10,2) DEFAULT 0 AFTER `sodium`, | |||||
MODIFY COLUMN `calcium` decimal(10,2) DEFAULT 0 AFTER `potassium`, | |||||
MODIFY COLUMN `phosphorus` decimal(10,2) DEFAULT 0 AFTER `calcium`, | |||||
MODIFY COLUMN `iron` decimal(10,2) DEFAULT 0 AFTER `phosphorus`, | |||||
MODIFY COLUMN `vitaminA` decimal(10,2) DEFAULT 0 AFTER `iron`, | |||||
MODIFY COLUMN `vitaminB1` decimal(10,2) DEFAULT 0 AFTER `vitaminA`, | |||||
MODIFY COLUMN `vitaminB2` decimal(10,2) DEFAULT 0 AFTER `vitaminB1`, | |||||
MODIFY COLUMN `niacin` decimal(10,2) DEFAULT 0 AFTER `vitaminB2`, | |||||
MODIFY COLUMN `vitaminC` decimal(10,2)DEFAULT 0 AFTER `niacin`; |
@@ -0,0 +1,40 @@ | |||||
--liquibase formatted sql | |||||
--changeset terence:create-table-and-insert-data | |||||
--comment: Create table and insert data | |||||
CREATE TABLE `Nutrients` ( | |||||
`nutrient_id` int NOT NULL AUTO_INCREMENT, | |||||
`nutrient_name` varchar(50) NOT NULL, | |||||
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, | |||||
PRIMARY KEY (`nutrient_id`), | |||||
UNIQUE KEY `idx_nutrient_name` (`nutrient_name`) | |||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; | |||||
CREATE TABLE `Nutrient_Impacts` ( | |||||
`impact_id` int NOT NULL AUTO_INCREMENT, | |||||
`nutrient_id` int NOT NULL, | |||||
`organ_affected` varchar(100) NOT NULL, | |||||
`impact_type` ENUM('Positive', 'Negative') NOT NULL, | |||||
`impact_description` text NOT NULL, | |||||
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, | |||||
PRIMARY KEY (`impact_id`), | |||||
FOREIGN KEY (`nutrient_id`) REFERENCES `Nutrients`(`nutrient_id`) | |||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; | |||||
-- 插入基础营养素数据 | |||||
INSERT INTO `Nutrients` (nutrient_name) VALUES | |||||
('Calories'), | |||||
('Protein'), | |||||
('Fat'), | |||||
('Carbohydrate'), | |||||
('Sodium'), | |||||
('Potassium'), | |||||
('Calcium'), | |||||
('Phosphorus'), | |||||
('Iron'), | |||||
('Vitamin A'), | |||||
('Vitamin B1'), | |||||
('Vitamin B2'), | |||||
('Niacin'), | |||||
('Vitamin C'); |
@@ -0,0 +1,26 @@ | |||||
--liquibase formatted sql | |||||
--changeset terence:create-table-and-insert-data | |||||
--comment: Create table and insert data | |||||
INSERT INTO `Nutrient_Impacts` | |||||
(nutrient_id, organ_affected, impact_type, impact_description) | |||||
VALUES | |||||
(2, 'Muscles', 'Positive', 'Essential for muscle growth and repair'), | |||||
(2, 'Bones', 'Positive', 'Helps maintain bone mass'), | |||||
(2, 'Immune System', 'Positive', 'Supports immune system function'), | |||||
-- Vitamin C impacts (假设 nutrient_id = 14) | |||||
(14, 'Immune System', 'Positive', 'Strengthens immune system and fights infections'), | |||||
(14, 'Skin', 'Positive', 'Promotes collagen production for healthy skin'), | |||||
(14, 'Blood Vessels', 'Positive', 'Supports blood vessel health'), | |||||
-- Iron impacts (假设 nutrient_id = 9) | |||||
(9, 'Blood', 'Positive', 'Essential for red blood cell production'), | |||||
(9, 'Brain', 'Positive', 'Supports cognitive function'), | |||||
(9, 'Immune System', 'Positive', 'Helps maintain immune system'), | |||||
-- Calcium impacts (假设 nutrient_id = 7) | |||||
(7, 'Bones', 'Positive', 'Essential for bone strength and density'), | |||||
(7, 'Teeth', 'Positive', 'Maintains dental health'), | |||||
(7, 'Muscles', 'Positive', 'Required for proper muscle function'); |
@@ -0,0 +1,49 @@ | |||||
/* | |||||
--liquibase formatted sql | |||||
--changeset terence:create-table-and-insert-data | |||||
--comment: Create table and insert data | |||||
CREATE TABLE `Allergies` ( | |||||
`allergy_id` int NOT NULL AUTO_INCREMENT, | |||||
`allergy_name` varchar(50) NOT NULL, | |||||
`description` text, | |||||
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, | |||||
PRIMARY KEY (`allergy_id`), | |||||
UNIQUE KEY `idx_allergy_name` (`allergy_name`) | |||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; | |||||
-- 用户过敏记录表 | |||||
CREATE TABLE `User_Allergies` ( | |||||
`user_allergy_id` int NOT NULL AUTO_INCREMENT, | |||||
`user_id` int NOT NULL, | |||||
`allergy_id` int NOT NULL, | |||||
`diagnosed_date` date, | |||||
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, | |||||
PRIMARY KEY (`user_allergy_id`), | |||||
UNIQUE KEY `idx_user_allergy` (`user_id`, `allergy_id`), | |||||
FOREIGN KEY (`user_id`) REFERENCES `users`(`id`), | |||||
FOREIGN KEY (`allergy_id`) REFERENCES `Allergies`(`allergy_id`) | |||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; | |||||
-- 插入常见过敏原数据 | |||||
INSERT INTO `Allergies` (allergy_name, description) VALUES | |||||
('Peanuts', 'Common legume that can cause severe allergic reactions'), | |||||
('Tree Nuts', 'Including almonds, walnuts, cashews, etc.'), | |||||
('Milk', 'Dairy products and lactose'), | |||||
('Eggs', 'Both egg whites and yolks'), | |||||
('Soy', 'Soybeans and soy-based products'), | |||||
('Wheat', 'Including gluten sensitivity'), | |||||
('Fish', 'Various types of fish'), | |||||
('Shellfish', 'Crustaceans and mollusks'), | |||||
('Sesame', 'Seeds and sesame oil'), | |||||
('Sulfites', 'Common food preservative'); | |||||
-- 插入示例用户过敏数据 | |||||
INSERT INTO `User_Allergies` | |||||
(user_id, allergy_id, severity_level, symptoms, diagnosed_date) | |||||
VALUES | |||||
(1, 1, 'Severe', 'Anaphylaxis, difficulty breathing, swelling', '2023-01-15'), | |||||
(1, 3, 'Moderate', 'Digestive issues, skin rash', '2023-02-20'), | |||||
(2, 4, 'Mild', 'Mild skin irritation', '2023-03-10'), | |||||
(2, 8, 'Severe', 'Severe rash, breathing difficulties', '2023-04-05'); | |||||
*/ |
@@ -0,0 +1,7 @@ | |||||
--liquibase formatted sql | |||||
--changeset terence:create-table-and-insert-data | |||||
--comment: Create table and insert data | |||||
Alter TABLE `fhsmscdb`.`food1` | |||||
ADD COLUMN `Restaurant_ID` int(11) DEFAULT NULL; |
@@ -0,0 +1,7 @@ | |||||
--liquibase formatted sql | |||||
--changeset terence:create-table-and-insert-data | |||||
--comment: Create table and insert data | |||||
INSERT INTO `food1` (`name`, `Calories (kcal)`, `Protein (g)`, `Fat (g)`, `Carbohydrate (g)`, `Sodium (mg)`, `Postassium (mg)`, `Calcium (mg)`, `Phosphorus (mg)`,`Iron (mg)`,`Vitamin A (μg)`,`Vitamin B1 (mg)`,`Vitamin B2 (mg)`,`Niacin (mg)`,`Vitamin C (mg)`,`food_type`,`Weight (g)`,`contains_egg`, `contains_milk`, `contains_wheat`, `contains_shrimp`,`contains_crab`,`contains_buckwheat`,`contains_peanut`,`contains_walnut`,`Restaurant_ID`) VALUES | |||||
('N.Y. Barbecue Sausage & Cheese McMuffin',504,16.6,32.9,35.1,952,263,162,190,1.1,60,0.2,0.21,6,3,'food',152,0,0,0,3,3,3,3,3,1); |
@@ -0,0 +1,15 @@ | |||||
--liquibase formatted sql | |||||
--changeset terence:create-table-and-insert-data | |||||
--comment: Create table and insert data | |||||
CREATE TABLE `Nutrients_Need` ( | |||||
`id` int NOT NULL, | |||||
`bmr` DECIMAL(10,2) NOT NULL, | |||||
`tdee` DECIMAL(10,2) NOT NULL, | |||||
`protein_need` DECIMAL(10,2) NOT NULL, | |||||
`fat_need` DECIMAL(10,2) NOT NULL, | |||||
`carbo_need` DECIMAL(10,2) NOT NULL, | |||||
`last_updated` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, | |||||
PRIMARY KEY (`id`), | |||||
FOREIGN KEY (`id`) REFERENCES `user` (`id`) | |||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; |
@@ -0,0 +1,64 @@ | |||||
--liquibase formatted sql | |||||
--changeset terence:create-update-trigger splitStatements:false | |||||
--comment: Create update trigger | |||||
CREATE TRIGGER update_user_Nutrients_Need | |||||
AFTER UPDATE ON user_information | |||||
FOR EACH ROW | |||||
BEGIN | |||||
DECLARE calculated_bmr DECIMAL(10,2); | |||||
DECLARE calculated_tdee DECIMAL(10,2); | |||||
DECLARE user_age INT; | |||||
DECLARE weight_kg DECIMAL(5,2); | |||||
DECLARE height_cm DECIMAL(5,2); | |||||
-- Extract numeric values from weight and height | |||||
SET weight_kg = CAST(REPLACE(NEW.weight, ' kg', '') AS DECIMAL(5,2)); | |||||
SET height_cm = CAST(REPLACE(NEW.height, ' cm', '') AS DECIMAL(5,2)); | |||||
-- Calculate age | |||||
SET user_age = FLOOR(DATEDIFF(CURRENT_DATE, FROM_UNIXTIME(NEW.date_of_birth/1000)) / 365); | |||||
-- Calculate BMR based on gender | |||||
IF NEW.gender = 'Male' THEN | |||||
SET calculated_bmr = 88.362 + (13.397 * weight_kg) + (4.799 * height_cm) - (5.677 * user_age); | |||||
ELSE | |||||
SET calculated_bmr = 447.593 + (9.247 * weight_kg) + (3.098 * height_cm) - (4.330 * user_age); | |||||
END IF; | |||||
-- Calculate TDEE based on activity level | |||||
SET calculated_tdee = calculated_bmr * | |||||
CASE NEW.activitylevel | |||||
WHEN 'Sedentary' THEN 1.2 | |||||
WHEN '1-2 times' THEN 1.375 | |||||
WHEN '3-5 times' THEN 1.55 | |||||
WHEN '6-7 times' THEN 1.725 | |||||
WHEN 'Professional' THEN 1.9 | |||||
ELSE 1.2 | |||||
END; | |||||
-- Insert or update TDEE record | |||||
INSERT INTO User_TDEE ( | |||||
user_id, | |||||
bmr, | |||||
tdee, | |||||
protein_need, | |||||
fat_need, | |||||
carbo_need | |||||
) | |||||
VALUES ( | |||||
NEW.user_id, | |||||
calculated_bmr, | |||||
calculated_tdee, | |||||
weight_kg * 2, | |||||
(calculated_tdee * 0.25) / 9, | |||||
(calculated_tdee - (weight_kg * 2 * 4) - (calculated_tdee * 0.25)) / 4 | |||||
) | |||||
ON DUPLICATE KEY UPDATE | |||||
bmr = calculated_bmr, | |||||
tdee = calculated_tdee, | |||||
protein_need = weight_kg * 2, | |||||
fat_need = (calculated_tdee * 0.25) / 9, | |||||
carbo_need = (calculated_tdee - (weight_kg * 2 * 4) - (calculated_tdee * 0.25)) / 4, | |||||
last_updated = CURRENT_TIMESTAMP; | |||||
END; |
@@ -0,0 +1,64 @@ | |||||
--liquibase formatted sql | |||||
--changeset terence:create-update-trigger splitStatements:false | |||||
--comment: Create update trigger | |||||
CREATE TRIGGER update_user_Nutrients_Need | |||||
AFTER UPDATE ON user_information | |||||
FOR EACH ROW | |||||
BEGIN | |||||
DECLARE calculated_bmr DECIMAL(10,2); | |||||
DECLARE calculated_tdee DECIMAL(10,2); | |||||
DECLARE user_age INT; | |||||
DECLARE weight_kg DECIMAL(5,2); | |||||
DECLARE height_cm DECIMAL(5,2); | |||||
-- Extract numeric values from weight and height | |||||
SET weight_kg = CAST(REPLACE(NEW.weight, ' kg', '') AS DECIMAL(5,2)); | |||||
SET height_cm = CAST(REPLACE(NEW.height, ' cm', '') AS DECIMAL(5,2)); | |||||
-- Calculate age | |||||
SET user_age = FLOOR(DATEDIFF(CURRENT_DATE, FROM_UNIXTIME(NEW.date_of_birth/1000)) / 365); | |||||
-- Calculate BMR based on gender | |||||
IF NEW.gender = 'Male' THEN | |||||
SET calculated_bmr = 88.362 + (13.397 * weight_kg) + (4.799 * height_cm) - (5.677 * user_age); | |||||
ELSE | |||||
SET calculated_bmr = 447.593 + (9.247 * weight_kg) + (3.098 * height_cm) - (4.330 * user_age); | |||||
END IF; | |||||
-- Calculate TDEE based on activity level | |||||
SET calculated_tdee = calculated_bmr * | |||||
CASE NEW.activitylevel | |||||
WHEN 'Sedentary' THEN 1.2 | |||||
WHEN '1-2 times' THEN 1.375 | |||||
WHEN '3-5 times' THEN 1.55 | |||||
WHEN '6-7 times' THEN 1.725 | |||||
WHEN 'Professional' THEN 1.9 | |||||
ELSE 1.2 | |||||
END; | |||||
-- Insert or update TDEE record | |||||
INSERT INTO nutrients_need ( | |||||
user_id, | |||||
bmr, | |||||
tdee, | |||||
protein_need, | |||||
fat_need, | |||||
carbo_need | |||||
) | |||||
VALUES ( | |||||
NEW.user_id, | |||||
calculated_bmr, | |||||
calculated_tdee, | |||||
weight_kg * 2, | |||||
(calculated_tdee * 0.25) / 9, | |||||
(calculated_tdee - (weight_kg * 2 * 4) - (calculated_tdee * 0.25)) / 4 | |||||
) | |||||
ON DUPLICATE KEY UPDATE | |||||
bmr = calculated_bmr, | |||||
tdee = calculated_tdee, | |||||
protein_need = weight_kg * 2, | |||||
fat_need = (calculated_tdee * 0.25) / 9, | |||||
carbo_need = (calculated_tdee - (weight_kg * 2 * 4) - (calculated_tdee * 0.25)) / 4, | |||||
last_updated = CURRENT_TIMESTAMP; | |||||
END; |
@@ -0,0 +1,44 @@ | |||||
--liquibase formatted sql | |||||
--changeset terence:create-table-and-insert-data | |||||
--comment: Create table and insert data | |||||
/* | |||||
CREATE TABLE `Allergies` ( | |||||
`allergy_id` int NOT NULL AUTO_INCREMENT, | |||||
`allergy_name` varchar(50) NOT NULL, | |||||
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, | |||||
PRIMARY KEY (`allergy_id`), | |||||
UNIQUE KEY `idx_allergy_name` (`allergy_name`) | |||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; | |||||
*/ | |||||
CREATE TABLE `User_Allergies` ( | |||||
`user_allergy_id` int NOT NULL AUTO_INCREMENT, | |||||
`user_id` int NOT NULL, | |||||
`allergy_id` int NOT NULL, | |||||
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, | |||||
PRIMARY KEY (`user_allergy_id`), | |||||
UNIQUE KEY `idx_user_allergy` (`user_id`, `allergy_id`), | |||||
FOREIGN KEY (`user_id`) REFERENCES `user`(`id`), | |||||
FOREIGN KEY (`allergy_id`) REFERENCES `Allergies`(`allergy_id`) | |||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; | |||||
-- 插入常见过敏原数据 | |||||
INSERT INTO `Allergies` (allergy_name) VALUES | |||||
('Peanuts'), | |||||
('Tree Nuts'), | |||||
('Milk'), | |||||
('Eggs'), | |||||
('Soy' ), | |||||
('Wheat'), | |||||
('Fish'), | |||||
('Shellfish'), | |||||
('Sesame'), | |||||
('Sulfites'); | |||||
-- 插入示例用户过敏数据 | |||||
INSERT INTO `User_Allergies` | |||||
(user_id, allergy_id ) | |||||
VALUES | |||||
(1, 1), | |||||
(1, 3), | |||||
(2, 4), | |||||
(2, 8); |
@@ -0,0 +1,19 @@ | |||||
--liquibase formatted sql | |||||
--changeset terence:create-table-and-insert-data | |||||
--comment: Create table and insert data | |||||
Alter TABLE `fhsmscdb`.`food1` | |||||
CHANGE `Calories (kcal)` Calories decimal(10,2), | |||||
CHANGE `Protein (g)` Protein decimal(10,2), | |||||
CHANGE `Fat (g)` Fat decimal(10,2), | |||||
CHANGE `Carbohydrate (g)` Carbohydrate decimal(10,2), | |||||
CHANGE `Sodium (mg)` Sodium decimal(10,2), | |||||
CHANGE `Postassium (mg)` Potassium decimal(10,2), | |||||
CHANGE `Calcium (mg)` Calcium decimal(10,2), | |||||
CHANGE `Phosphorus (mg)` Phosphorus decimal(10,2), | |||||
CHANGE `Iron (mg)` Iron decimal(10,2), | |||||
CHANGE `Vitamin A (μg)` VitaminA decimal(10,2), | |||||
CHANGE `Vitamin B1 (mg)` VitaminB1 decimal(10,2), | |||||
CHANGE `Vitamin B2 (mg)` VitaminB2 decimal(10,2), | |||||
CHANGE `Niacin (mg)` Niacin decimal(10,2), | |||||
CHANGE `Vitamin C (mg)` VitaminC decimal(10,2), | |||||
CHANGE `Weight (g)` Weight decimal(10,2); |
@@ -0,0 +1,6 @@ | |||||
--liquibase formatted sql | |||||
--changeset terence:create-table-and-insert-data | |||||
--comment: Create table and insert data | |||||
Alter TABLE `fhsmscdb`.`user_information` | |||||
drop column `allergy`; | |||||
@@ -0,0 +1,13 @@ | |||||
--liquibase formatted sql | |||||
--changeset terence:create-table-and-insert-data | |||||
--comment: Create table and insert data | |||||
CREATE TABLE `FB_Operator` ( | |||||
`FB_id` int NOT NULL AUTO_INCREMENT, | |||||
`FB_name` varchar(50) NOT NULL, | |||||
`FB_type` varchar(255) NOT NULL, | |||||
`FB_cuisine` varchar(20) NOT NULL, | |||||
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, | |||||
PRIMARY KEY (`FB_id`) | |||||
)ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; |
@@ -0,0 +1,17 @@ | |||||
--liquibase formatted sql | |||||
--changeset terence:create-table-and-insert-data | |||||
--comment: Create table and insert data | |||||
INSERT INTO `FB_Operator` | |||||
(FB_id, FB_name, FB_type, FB_cuisine) | |||||
VALUES | |||||
(1, 'KFC', 'Fast Food', 'Fast Food'), | |||||
(2, 'McDonald', 'Fast Food', 'Fast Food'), | |||||
(3, '大家樂', 'Cha Chaan Teng', 'Hong Kong Style'), | |||||
(4, '翠華餐廳', 'Cha Chaan Teng', 'Hong Kong Style'), | |||||
(5, '美心', 'Chinese Restaurant', 'Cantonese'), | |||||
(6, '點點心', 'Dim Sum', 'Cantonese'), | |||||
(7, '吉野家', 'Fast Food', 'Japanese'), | |||||
(8, '壽司郎', 'Japanese Restaurant', 'Japanese'), | |||||
(9, '譚仔雲南米線', 'Noodle Shop', 'Chinese'), | |||||
(10, '大快活', 'Fast Food', 'Hong Kong Style') |
@@ -0,0 +1,14 @@ | |||||
--liquibase formatted sql | |||||
--changeset terence:create-table-and-insert-data | |||||
--comment: Create table and insert data | |||||
CREATE TABLE `FB_Outlets` ( | |||||
`FB_id` int NOT NULL AUTO_INCREMENT, | |||||
`FB_outlet_id` int NOT NULL, | |||||
`FB_outlet_district` varchar(255) NOT NULL, | |||||
`FB_outlet_address` varchar(255) NOT NULL, | |||||
`FB_outlet_phone` varchar(255) NOT NULL, | |||||
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, | |||||
PRIMARY KEY (`FB_id`) | |||||
)ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; |
@@ -0,0 +1,14 @@ | |||||
--liquibase formatted sql | |||||
--changeset terence:create-table-and-insert-data | |||||
--comment: Create table and insert data | |||||
ALTER TABLE `FB_Outlets` MODIFY COLUMN `FB_id` int NOT NULL; | |||||
ALTER TABLE `FB_Outlets` DROP PRIMARY KEY; | |||||
ALTER TABLE `FB_Outlets` ADD PRIMARY KEY (`FB_outlet_id`); | |||||
ALTER TABLE `FB_Outlets` ADD CONSTRAINT `fk_fb_outlets_operator` | |||||
FOREIGN KEY (`FB_id`) REFERENCES `fb_operator`(`FB_id`); | |||||
ALTER TABLE `FB_Outlets` ADD INDEX `idx_fb_id` (`FB_id`); |
@@ -0,0 +1,7 @@ | |||||
--liquibase formatted sql | |||||
--changeset terence:create-table-and-insert-data | |||||
--comment: Create table and insert data | |||||
ALTER TABLE `FB_Outlets` MODIFY COLUMN `FB_outlet_id` int NOT NULL FIRST; | |||||
ALTER TABLE `FB_Outlets` MODIFY COLUMN `FB_id` int NOT NULL AFTER `FB_outlet_id`; |
@@ -0,0 +1,20 @@ | |||||
--liquibase formatted sql | |||||
--changeset terence:create-table-and-insert-data | |||||
--comment: Create table and insert data | |||||
DROP TABLE `FB_Outlets`; | |||||
-- 用新结构创建表 | |||||
CREATE TABLE `FB_Outlets` ( | |||||
`id` int NOT NULL AUTO_INCREMENT, | |||||
`FB_outlet_id` int NOT NULL, | |||||
`FB_id` int NOT NULL, | |||||
`FB_outlet_district` varchar(255), | |||||
`FB_outlet_address` varchar(255), | |||||
`FB_outlet_phone` varchar(255), | |||||
`created_at` timestamp, | |||||
PRIMARY KEY (`id`), | |||||
INDEX `idx_fb_outlet_id` (`FB_outlet_id`), | |||||
INDEX `idx_fb_id` (`FB_id`), | |||||
CONSTRAINT `fk_fb_outlets_operator` FOREIGN KEY (`FB_id`) | |||||
REFERENCES `fb_operator` (`FB_id`) | |||||
); |
@@ -0,0 +1,13 @@ | |||||
--liquibase formatted sql | |||||
--changeset terence:create-table-and-insert-data | |||||
--comment: Create table and insert data | |||||
INSERT INTO `FB_Outlets` (FB_outlet_id, FB_id, FB_outlet_district, FB_outlet_address, FB_outlet_phone, created_at) | |||||
VALUES | |||||
(201, 2, '金鐘', '夏愨道18號海富中心地下1-41號舖A部份', '2520 1329', CURRENT_TIMESTAMP), | |||||
(202, 2, '灣仔', '軒尼詩道302-308號集成中心Shop G11-17 ,G/F', '2893 9503', CURRENT_TIMESTAMP); | |||||
INSERT INTO FB_Outlets (FB_outlet_id, FB_id, FB_outlet_district, FB_outlet_address, FB_outlet_phone, created_at) | |||||
VALUES | |||||
(301, 3, '銅鑼灣', '波斯富街48號軒尼詩大廈3樓', '2808 0139', CURRENT_TIMESTAMP), | |||||
(302, 3, '銅鑼灣', '地下英皇道6-8 號香港天后百利大廈', '2807 3864', CURRENT_TIMESTAMP); |
@@ -0,0 +1,8 @@ | |||||
--liquibase formatted sql | |||||
--changeset terence:create-table-and-insert-data | |||||
--comment: Create table and insert data | |||||
INSERT INTO `fb_outlets` (FB_outlet_id, FB_id, FB_outlet_district, FB_outlet_address, FB_outlet_phone, created_at) | |||||
VALUES | |||||
(201, 2, '金鐘', '夏愨道18號海富中心地下1-41號舖A部份', '2520 1329', CURRENT_TIMESTAMP), | |||||
(202, 2, '灣仔', '軒尼詩道302-308號集成中心Shop G11-17 ,G/F', '2893 9503', CURRENT_TIMESTAMP); | |||||
@@ -0,0 +1,71 @@ | |||||
--liquibase formatted sql | |||||
--changeset terence:create-table-and-insert-data | |||||
--comment: Create table and insert data | |||||
-- 餐厅菜单表 | |||||
CREATE TABLE `FB_Menu` ( | |||||
`FB_id` int NOT NULL AUTO_INCREMENT, | |||||
`FB_menu_id` int NOT NULL, | |||||
`Menu_Item_Description` varchar(255) NOT NULL, | |||||
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, | |||||
PRIMARY KEY (`FB_id`), | |||||
UNIQUE KEY `UK_FB_menu_id` (`FB_menu_id`) | |||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; | |||||
-- 菜单项成分表 | |||||
CREATE TABLE `FB_Menu_Item_Ingredient` ( | |||||
`id` int NOT NULL AUTO_INCREMENT, | |||||
`FB_menu_id` int NOT NULL, | |||||
`Ingredient_id` int NOT NULL, | |||||
`Ingredient_Volume` decimal(10,2) NOT NULL, | |||||
`Ingredient_Volume_Unit` varchar(50) NOT NULL, | |||||
`Allergy_Substance_ID` int, | |||||
`Nutrient_ID` int, | |||||
`Nutrient_Volume` decimal(10,2), | |||||
`Nutrient_Volume_Unit` varchar(50), | |||||
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, | |||||
PRIMARY KEY (`id`), | |||||
KEY `FK_FB_menu_id` (`FB_menu_id`), | |||||
CONSTRAINT `FK_FB_menu_id` FOREIGN KEY (`FB_menu_id`) REFERENCES `FB_Menu` (`FB_menu_id`) ON DELETE CASCADE | |||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; | |||||
-- 菜单与门店关系表 | |||||
CREATE TABLE `FB_Menu_and_Outlet_Relationship` ( | |||||
`id` int NOT NULL AUTO_INCREMENT, | |||||
`FB_id` int NOT NULL, | |||||
`FB_outlet_id` int NOT NULL, | |||||
`FB_menu_id` int NOT NULL, | |||||
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, | |||||
PRIMARY KEY (`id`), | |||||
KEY `FK_FB_menu_rel_id` (`FB_menu_id`), | |||||
CONSTRAINT `FK_FB_menu_rel_id` FOREIGN KEY (`FB_menu_id`) REFERENCES `FB_Menu` (`FB_menu_id`) ON DELETE CASCADE | |||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; | |||||
-- 每日营养摄入汇总表 | |||||
CREATE TABLE `daily_nutrition_summary` ( | |||||
`id` int NOT NULL AUTO_INCREMENT, | |||||
`user_id` int NOT NULL, | |||||
`date` date NOT NULL, | |||||
`total_calories` decimal(10,2) DEFAULT 0, | |||||
`total_protein` decimal(10,2) DEFAULT 0, | |||||
`total_fat` decimal(10,2) DEFAULT 0, | |||||
`total_carbs` decimal(10,2) DEFAULT 0, | |||||
`total_sodium` decimal(10,2) DEFAULT 0, | |||||
`total_potassium` decimal(10,2) DEFAULT 0, | |||||
`total_calcium` decimal(10,2) DEFAULT 0, | |||||
`total_phosphorus` decimal(10,2) DEFAULT 0, | |||||
`total_iron` decimal(10,2) DEFAULT 0, | |||||
`total_vitamin_a` decimal(10,2) DEFAULT 0, | |||||
`total_vitamin_b1` decimal(10,2) DEFAULT 0, | |||||
`total_vitamin_b2` decimal(10,2) DEFAULT 0, | |||||
`total_niacin` decimal(10,2) DEFAULT 0, | |||||
`total_vitamin_c` decimal(10,2) DEFAULT 0, | |||||
`breakfast_calories` decimal(10,2) DEFAULT 0, | |||||
`lunch_calories` decimal(10,2) DEFAULT 0, | |||||
`dinner_calories` decimal(10,2) DEFAULT 0, | |||||
`snack_calories` decimal(10,2) DEFAULT 0, | |||||
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, | |||||
`updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, | |||||
PRIMARY KEY (`id`), | |||||
UNIQUE KEY `UK_user_date` (`user_id`, `date`) | |||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; |
@@ -0,0 +1,43 @@ | |||||
--liquibase formatted sql | |||||
--changeset terence:create-table-and-insert-data | |||||
--comment: Create table and insert data | |||||
/* | |||||
CREATE TABLE `FB_Menu_Item_Nutrition` ( | |||||
`id` int NOT NULL AUTO_INCREMENT, | |||||
`FB_menu_id` int NOT NULL, | |||||
`Calories` decimal(10,2) DEFAULT 0, | |||||
`Protein` decimal(10,2) DEFAULT 0, | |||||
`Fat` decimal(10,2) DEFAULT 0, | |||||
`Carbohydrate` decimal(10,2) DEFAULT 0, | |||||
`Sodium` decimal(10,2) DEFAULT 0, | |||||
`Potassium` decimal(10,2) DEFAULT 0, | |||||
`Calcium` decimal(10,2) DEFAULT 0, | |||||
`Phosphorus` decimal(10,2) DEFAULT 0, | |||||
`Iron` decimal(10,2) DEFAULT 0, | |||||
`VitaminA` decimal(10,2) DEFAULT 0, | |||||
`VitaminB1` decimal(10,2) DEFAULT 0, | |||||
`VitaminB2` decimal(10,2) DEFAULT 0, | |||||
`Niacin` decimal(10,2) DEFAULT 0, | |||||
`VitaminC` decimal(10,2) DEFAULT 0, | |||||
`Nutrient_Volume` decimal(10,2) DEFAULT 0, | |||||
`Nutrient_Volume_Unit` varchar(50) NOT NULL, | |||||
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, | |||||
PRIMARY KEY (`id`), | |||||
KEY `UK_FB_menu_id` (`FB_menu_id`), | |||||
CONSTRAINT `FK_FB_menu_nutrition_id` FOREIGN KEY (`FB_menu_id`) REFERENCES `FB_Menu` (`FB_menu_id`) ON DELETE CASCADE | |||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; | |||||
*/ | |||||
CREATE TABLE `Ingredient` ( | |||||
`Ingredient_id` int NOT NULL AUTO_INCREMENT, | |||||
`Ingredient_Name` varchar(255) NOT NULL, | |||||
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, | |||||
PRIMARY KEY (`Ingredient_id`) | |||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; | |||||
ALTER TABLE `fhsmscdb`.`fb_menu_item_ingredient` | |||||
DROP COLUMN `Nutrient_ID`, | |||||
DROP COLUMN `Nutrient_Volume`, | |||||
DROP COLUMN `Nutrient_Volume_Unit`; | |||||
@@ -0,0 +1,175 @@ | |||||
--liquibase formatted sql | |||||
--changeset terence:create-table-and-insert-data | |||||
--comment: Create table and insert data | |||||
DROP TABLE IF EXISTS fb_menu_and_outlet_relationship; | |||||
DROP TABLE IF EXISTS fb_menu_item_ingredient; | |||||
DROP TABLE IF EXISTS fb_menu_item_nutrition; | |||||
DROP TABLE IF EXISTS fb_menu; | |||||
DROP TABLE IF EXISTS ingredient; | |||||
CREATE TABLE `ingredient` ( | |||||
`Ingredient_id` int NOT NULL AUTO_INCREMENT, | |||||
`Ingredient_Name` varchar(255) NOT NULL, | |||||
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, | |||||
PRIMARY KEY (`Ingredient_id`) | |||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; | |||||
-- 重新创建fb_menu表,使用FB_menu_id作为主键 | |||||
CREATE TABLE `fb_menu` ( | |||||
`FB_id` int NOT NULL, | |||||
`FB_menu_id` int NOT NULL AUTO_INCREMENT, | |||||
`Menu_Item_Description` varchar(255) NOT NULL, | |||||
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, | |||||
PRIMARY KEY (`FB_menu_id`), | |||||
INDEX `idx_FB_id` (`FB_id`) | |||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; | |||||
CREATE TABLE `fb_menu_item_nutrition` ( | |||||
`id` int NOT NULL AUTO_INCREMENT, | |||||
`FB_menu_id` int NOT NULL, | |||||
`Calories` decimal(10,2) DEFAULT 0, | |||||
`Protein` decimal(10,2) DEFAULT 0, | |||||
`Fat` decimal(10,2) DEFAULT 0, | |||||
`Carbohydrate` decimal(10,2) DEFAULT 0, | |||||
`Sodium` decimal(10,2) DEFAULT 0, | |||||
`Potassium` decimal(10,2) DEFAULT 0, | |||||
`Calcium` decimal(10,2) DEFAULT 0, | |||||
`Phosphorus` decimal(10,2) DEFAULT 0, | |||||
`Iron` decimal(10,2) DEFAULT 0, | |||||
`VitaminA` decimal(10,2) DEFAULT 0, | |||||
`VitaminB1` decimal(10,2) DEFAULT 0, | |||||
`VitaminB2` decimal(10,2) DEFAULT 0, | |||||
`Niacin` decimal(10,2) DEFAULT 0, | |||||
`VitaminC` decimal(10,2) DEFAULT 0, | |||||
`Nutrient_Volume` decimal(10,2) DEFAULT 0, | |||||
`Nutrient_Volume_Unit` varchar(50) NOT NULL, | |||||
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, | |||||
PRIMARY KEY (`id`), | |||||
KEY `FK_FB_menu_nutrition_id` (`FB_menu_id`), | |||||
CONSTRAINT `FK_FB_menu_nutrition_id` FOREIGN KEY (`FB_menu_id`) REFERENCES `fb_menu` (`FB_menu_id`) ON DELETE CASCADE | |||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; | |||||
CREATE TABLE `fb_menu_item_ingredient` ( | |||||
`id` int NOT NULL AUTO_INCREMENT, | |||||
`FB_menu_id` int NOT NULL, | |||||
`Ingredient_id` int NOT NULL, | |||||
`Ingredient_Volume` decimal(10,2) NOT NULL, | |||||
`Ingredient_Volume_Unit` varchar(50) NOT NULL, | |||||
`Allergy_Substance_ID` int, | |||||
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, | |||||
PRIMARY KEY (`id`), | |||||
KEY `FK_FB_menu_id` (`FB_menu_id`), | |||||
KEY `FK_Ingredient_id` (`Ingredient_id`), | |||||
CONSTRAINT `FK_FB_menu_id` FOREIGN KEY (`FB_menu_id`) REFERENCES `fb_menu` (`FB_menu_id`) ON DELETE CASCADE, | |||||
CONSTRAINT `FK_Ingredient_id` FOREIGN KEY (`Ingredient_id`) REFERENCES `ingredient` (`Ingredient_id`) ON DELETE CASCADE | |||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; | |||||
CREATE TABLE `fb_menu_and_outlet_relationship` ( | |||||
`id` int NOT NULL AUTO_INCREMENT, | |||||
`FB_id` int NOT NULL, | |||||
`FB_outlet_id` int NOT NULL, | |||||
`FB_menu_id` int NOT NULL, | |||||
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, | |||||
PRIMARY KEY (`id`), | |||||
KEY `FK_FB_menu_rel_id` (`FB_menu_id`), | |||||
CONSTRAINT `FK_FB_menu_rel_id` FOREIGN KEY (`FB_menu_id`) REFERENCES `fb_menu` (`FB_menu_id`) ON DELETE CASCADE | |||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; | |||||
INSERT INTO fb_menu (FB_id, FB_menu_id, Menu_Item_Description, created_at) VALUES | |||||
(1, 101, '香煎三文鱼配时蔬', NOW()), | |||||
(1, 102, '黑椒牛排配蘑菇酱', NOW()), | |||||
(1, 103, '泰式青咖喱鸡', NOW()), | |||||
(1, 104, '意式肉酱面配帕玛森芝士', NOW()), | |||||
(1, 105, '地中海风味沙拉', NOW()), | |||||
(2, 201, '清蒸鲈鱼配姜葱', NOW()), | |||||
(2, 202, '红烧狮子头', NOW()), | |||||
(2, 203, '宫保鸡丁配花生米', NOW()); | |||||
-- 插入营养信息数据 | |||||
INSERT INTO fb_menu_item_nutrition (FB_menu_id, Calories, Protein, Fat, Carbohydrate, Sodium, Potassium, Calcium, Phosphorus, Iron, VitaminA, VitaminB1, VitaminB2, Niacin, VitaminC, Nutrient_Volume, Nutrient_Volume_Unit, created_at) VALUES | |||||
(101, 275.00, 25.00, 15.00, 10.00, 150.00, 450.00, 30.00, 250.00, 1.80, 120.00, 0.15, 0.20, 5.00, 15.00, 350.00, 'g', NOW()), | |||||
(102, 320.00, 30.00, 20.00, 5.00, 200.00, 500.00, 20.00, 200.00, 3.50, 50.00, 0.10, 0.15, 7.00, 5.00, 300.00, 'g', NOW()), | |||||
(103, 310.00, 22.00, 18.00, 15.00, 300.00, 400.00, 50.00, 180.00, 2.00, 80.00, 0.12, 0.18, 6.00, 20.00, 350.00, 'g', NOW()), | |||||
(104, 480.00, 20.00, 15.00, 65.00, 800.00, 350.00, 150.00, 200.00, 2.50, 100.00, 0.20, 0.25, 4.00, 10.00, 400.00, 'g', NOW()), | |||||
(105, 200.00, 8.00, 12.00, 15.00, 120.00, 300.00, 100.00, 120.00, 1.20, 150.00, 0.08, 0.12, 2.00, 45.00, 250.00, 'g', NOW()); | |||||
INSERT INTO ingredient (Ingredient_id, Ingredient_Name, created_at) VALUES | |||||
(1, '三文鱼', NOW()), | |||||
(2, '橄榄油', NOW()), | |||||
(3, '西兰花', NOW()), | |||||
(4, '胡萝卜', NOW()), | |||||
(5, '牛排', NOW()), | |||||
(6, '黑胡椒', NOW()), | |||||
(7, '蘑菇', NOW()), | |||||
(8, '鸡胸肉', NOW()), | |||||
(9, '青咖喱酱', NOW()), | |||||
(10, '椰奶', NOW()), | |||||
(11, '意大利面', NOW()), | |||||
(12, '番茄', NOW()), | |||||
(13, '牛肉碎', NOW()), | |||||
(14, '帕玛森芝士', NOW()), | |||||
(15, '生菜', NOW()), | |||||
(16, '黄瓜', NOW()), | |||||
(17, '橄榄', NOW()), | |||||
(18, '羊奶芝士', NOW()); | |||||
INSERT INTO fb_menu_item_ingredient (FB_menu_id, Ingredient_id, Ingredient_Volume, Ingredient_Volume_Unit, Allergy_Substance_ID, created_at) VALUES | |||||
(101, 1, 200.00, 'g', 7, NOW()), -- 三文鱼 (鱼类过敏 | |||||
(101, 2, 15.00, 'ml', NULL, NOW()), | |||||
(101, 3, 100.00, 'g', NULL, NOW()), | |||||
(101, 4, 50.00, 'g', NULL, NOW()), | |||||
(102, 5, 250.00, 'g', NULL, NOW()), | |||||
(102, 6, 5.00, 'g', NULL, NOW()), | |||||
(102, 7, 100.00, 'g', NULL, NOW()), | |||||
(102, 2, 10.00, 'ml', NULL, NOW()), | |||||
(103, 8, 180.00, 'g', NULL, NOW()), | |||||
(103, 9, 30.00, 'g', 5, NOW()), -- 咖喱酱 (可能含大豆) | |||||
(103, 10, 150.00, 'ml', 3, NOW()), -- 椰奶 (可能含乳制品) | |||||
(103, 3, 80.00, 'g', NULL, NOW()), | |||||
(104, 11, 120.00, 'g', 6, NOW()), -- 意大利面 (含麦麸) | |||||
(104, 12, 150.00, 'g', NULL, NOW()), | |||||
(104, 13, 100.00, 'g', NULL, NOW()), | |||||
(104, 14, 20.00, 'g', 3, NOW()), -- 帕玛森芝士 (含乳制品) | |||||
(105, 15, 100.00, 'g', NULL, NOW()), | |||||
(105, 16, 80.00, 'g', NULL, NOW()), | |||||
(105, 17, 30.00, 'g', NULL, NOW()), | |||||
(105, 18, 40.00, 'g', 3, NOW()), -- 羊奶芝士 (含乳制品) | |||||
(105, 2, 15.00, 'ml', NULL, NOW()); | |||||
INSERT INTO fb_menu_and_outlet_relationship (FB_id, FB_outlet_id, FB_menu_id, created_at) VALUES | |||||
(1, 1001, 101, NOW()), | |||||
(1, 1001, 102, NOW()), | |||||
(1, 1001, 103, NOW()), | |||||
(1, 1002, 101, NOW()), | |||||
(1, 1002, 104, NOW()), | |||||
(1, 1002, 105, NOW()), | |||||
(2, 2001, 201, NOW()), | |||||
(2, 2001, 202, NOW()), | |||||
(2, 2001, 203, NOW()), | |||||
(2, 2002, 201, NOW()), | |||||
(2, 2002, 202, NOW()); |
@@ -0,0 +1,17 @@ | |||||
--liquibase formatted sql | |||||
--changeset terence:create-table-and-insert-data | |||||
--comment: Create table and insert data | |||||
/* | |||||
INSERT INTO fb_operator (FB_id, FB_name, FB_type, FB_cuisine, created_at) VALUES | |||||
(1, 'Healthy Eater', 'Fast Food', 'Chinese', NOW()), | |||||
(2, 'Seafood World', 'Dinner', 'Cantonese', NOW()), | |||||
*/ | |||||
INSERT INTO fb_outlets (FB_outlet_id, FB_id, FB_outlet_district, FB_outlet_address, FB_outlet_phone, created_at) VALUES | |||||
(1001, 1, 'Central', 'Central Financial Street 88, 1st Floor', '2345-6789', NOW()), | |||||
(1002, 1, 'Causeway Bay', 'Causeway Bay Times Square 2nd Floor', '2345-6790', NOW()), | |||||
(2001, 2, 'Tsim Sha Tsui', 'Tsim Sha Tsui Guangdong Road 30', '3456-7890', NOW()), | |||||
(2002, 2, 'Sha Tin', 'Sha Tin New City Plaza 5th Floor', '3456-7891', NOW()); |
@@ -0,0 +1,85 @@ | |||||
--liquibase formatted sql | |||||
--changeset terence:create-organization-tables | |||||
--comment: Create organization related tables | |||||
DROP TABLE daily_nutrition_summary; | |||||
CREATE TABLE User_Group_Organization ( | |||||
User_Grp_Org_ID INT AUTO_INCREMENT PRIMARY KEY, | |||||
User_Grp_Org_Name VARCHAR(100) NOT NULL, | |||||
Creator_User_ID INT NOT NULL, | |||||
Creation_Date_Time TIMESTAMP DEFAULT CURRENT_TIMESTAMP | |||||
); | |||||
CREATE TABLE User_Group_Members ( | |||||
User_Grp_Org_ID INT NOT NULL, | |||||
User_ID INT NOT NULL, | |||||
R_Ship_Creator VARCHAR(50), | |||||
Creation_Date_Time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, | |||||
PRIMARY KEY (User_Grp_Org_ID, User_ID), | |||||
FOREIGN KEY (User_Grp_Org_ID) REFERENCES User_Group_Organization(User_Grp_Org_ID) | |||||
); | |||||
CREATE TABLE User_Group_Admin ( | |||||
User_Grp_Org_ID INT NOT NULL, | |||||
Admin_User_ID INT NOT NULL, | |||||
Organization_Role VARCHAR(50) NOT NULL, | |||||
Creation_Date_Time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, | |||||
PRIMARY KEY (User_Grp_Org_ID, Admin_User_ID), | |||||
FOREIGN KEY (User_Grp_Org_ID) REFERENCES User_Group_Organization(User_Grp_Org_ID) | |||||
); | |||||
CREATE TABLE User_Delegation ( | |||||
User_ID INT NOT NULL, | |||||
Delegate_To_User_ID INT NOT NULL, | |||||
Data_Group_ID INT NOT NULL, | |||||
Delegation_Start_Date DATE NOT NULL, | |||||
Delegation_Expiry_Date DATE NOT NULL, | |||||
Creation_Date_Time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, | |||||
PRIMARY KEY (User_ID, Delegate_To_User_ID, Data_Group_ID) | |||||
); | |||||
CREATE TABLE daily_nutrition_summary ( | |||||
id INT AUTO_INCREMENT PRIMARY KEY, | |||||
user_id INT NOT NULL, | |||||
User_Grp_Org_ID INT, | |||||
date DATE NOT NULL, | |||||
visibility_level INT DEFAULT 1, | |||||
data_category VARCHAR(50) DEFAULT 'regular', | |||||
reference_group_id INT, | |||||
health_metrics_reference_id INT, | |||||
total_calories DECIMAL(10,2) DEFAULT 0, | |||||
total_protein DECIMAL(10,2) DEFAULT 0, | |||||
total_fat DECIMAL(10,2) DEFAULT 0, | |||||
total_carbs DECIMAL(10,2) DEFAULT 0, | |||||
total_sodium DECIMAL(10,2) DEFAULT 0, | |||||
total_potassium DECIMAL(10,2) DEFAULT 0, | |||||
total_calcium DECIMAL(10,2) DEFAULT 0, | |||||
total_phosphorus DECIMAL(10,2) DEFAULT 0, | |||||
total_iron DECIMAL(10,2) DEFAULT 0, | |||||
total_vitamin_a DECIMAL(10,2) DEFAULT 0, | |||||
total_vitamin_b1 DECIMAL(10,2) DEFAULT 0, | |||||
total_vitamin_b2 DECIMAL(10,2) DEFAULT 0, | |||||
total_niacin DECIMAL(10,2) DEFAULT 0, | |||||
total_vitamin_c DECIMAL(10,2) DEFAULT 0, | |||||
breakfast_calories DECIMAL(10,2) DEFAULT 0, | |||||
lunch_calories DECIMAL(10,2) DEFAULT 0, | |||||
dinner_calories DECIMAL(10,2) DEFAULT 0, | |||||
snack_calories DECIMAL(10,2) DEFAULT 0, | |||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, | |||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, | |||||
FOREIGN KEY (User_Grp_Org_ID) REFERENCES User_Group_Organization(User_Grp_Org_ID) | |||||
); | |||||
CREATE INDEX idx_daily_nutrition_user_date ON daily_nutrition_summary(user_id, date); | |||||
CREATE INDEX idx_daily_nutrition_org_date ON daily_nutrition_summary(User_Grp_Org_ID, date); | |||||
@@ -0,0 +1,71 @@ | |||||
--liquibase formatted sql | |||||
--changeset terence:create-organization-tables | |||||
--comment: Create organization related tables | |||||
INSERT INTO User_Group_Organization (User_Grp_Org_ID, User_Grp_Org_Name, Creator_User_ID, Creation_Date_Time) | |||||
VALUES | |||||
(1, 'Aschool', 1001, NOW()), | |||||
(2, 'Bschool', 1002, NOW()), | |||||
(3, 'Cschool', 1003, NOW()), | |||||
(4, 'Dschool', 1004, NOW()), | |||||
(5, 'Eschool', 1005, NOW()); | |||||
INSERT INTO User_Group_Members (User_Grp_Org_ID, User_ID, R_Ship_Creator, Creation_Date_Time) | |||||
VALUES | |||||
(1, 1001, 'Creator', NOW()), | |||||
(1, 1010, 'Student', NOW()), | |||||
(1, 1011, 'Student', NOW()), | |||||
(1, 1012, 'Teacher', NOW()), | |||||
(1, 1013, 'Teacher', NOW()), | |||||
(2, 1002, 'Creator', NOW()), | |||||
(2, 1020, 'Student', NOW()), | |||||
(2, 1021, 'Student', NOW()), | |||||
(2, 1022, 'Teacher', NOW()), | |||||
(3, 1003, 'Creator', NOW()), | |||||
(3, 1030, 'Student', NOW()), | |||||
(3, 1031, 'Student', NOW()), | |||||
(4, 1004, 'Creator', NOW()), | |||||
(4, 1040, 'Student', NOW()), | |||||
(5, 1005, 'Creator', NOW()), | |||||
(5, 1050, 'Student', NOW()); | |||||
INSERT INTO User_Group_Admin (User_Grp_Org_ID, Admin_User_ID, Organization_Role, Creation_Date_Time) | |||||
VALUES | |||||
(1, 1001, 'President', NOW()), | |||||
(1, 1012, 'Dean', NOW()), | |||||
(1, 1013, 'Dean', NOW()), | |||||
(2, 1002, 'President', NOW()), | |||||
(2, 1022, 'Dean', NOW()), | |||||
(3, 1003, 'President', NOW()), | |||||
(3, 1031, 'President', NOW()), | |||||
(4, 1004, 'President', NOW()), | |||||
(5, 1005, 'President', NOW()); | |||||
INSERT INTO User_Delegation (User_ID, Delegate_To_User_ID, Data_Group_ID, Delegation_Start_Date, Delegation_Expiry_Date, Creation_Date_Time) | |||||
VALUES | |||||
(1001, 1012, 1, CURDATE(), DATE_ADD(CURDATE(), INTERVAL 1 YEAR), NOW()), | |||||
(1001, 1013, 2, CURDATE(), DATE_ADD(CURDATE(), INTERVAL 6 MONTH), NOW()), | |||||
(1002, 1022, 1, CURDATE(), DATE_ADD(CURDATE(), INTERVAL 1 YEAR), NOW()), | |||||
(1002, 1022, 2, CURDATE(), DATE_ADD(CURDATE(), INTERVAL 1 YEAR), NOW()), | |||||
(1003, 1031, 3, CURDATE(), DATE_ADD(CURDATE(), INTERVAL 3 MONTH), NOW()), | |||||
(1010, 1011, 4, CURDATE(), DATE_ADD(CURDATE(), INTERVAL 7 DAY), NOW()); |
@@ -0,0 +1,11 @@ | |||||
--liquibase formatted sql | |||||
--changeset terence:insert-sample-data | |||||
--comment: Insert sample data for testing | |||||
ALTER TABLE `fhsmscdb`.`daily_nutrition_summary` | |||||
CHANGE COLUMN `created_at` `created` datetime, | |||||
CHANGE COLUMN `updated_at` `modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, | |||||
ADD COLUMN `createdBy` bigint DEFAULT NULL, | |||||
ADD COLUMN `version` int NOT NULL DEFAULT '0', | |||||
ADD COLUMN `modifiedBy` bigint DEFAULT NULL, | |||||
ADD COLUMN `deleted` tinyint(1) NOT NULL DEFAULT '0'; |
@@ -0,0 +1,35 @@ | |||||
--liquibase formatted sql | |||||
--changeset terence:create-i18n-table | |||||
--comment: Create i18n table | |||||
UPDATE fb_menu SET Menu_Item_Description = CASE FB_menu_id | |||||
WHEN 101 THEN 'Pan-fried Salmon with Seasonal Vegetables' | |||||
WHEN 102 THEN 'Black Pepper Steak with Mushroom Sauce' | |||||
WHEN 103 THEN 'Thai Green Curry Chicken' | |||||
WHEN 104 THEN 'Spaghetti Bolognese with Parmesan Cheese' | |||||
WHEN 105 THEN 'Mediterranean Salad' | |||||
WHEN 201 THEN 'Steamed Sea Bass with Ginger and Spring Onion' | |||||
WHEN 202 THEN 'Braised Lion Head Meatballs' | |||||
WHEN 203 THEN 'Kung Pao Chicken with Peanuts' | |||||
END | |||||
WHERE FB_menu_id IN (101,102,103,104,105,201,202,203); | |||||
INSERT INTO i18n (table_name, field_name, record_id, language, value) VALUES | |||||
('fb_menu', 'Menu_Item_Description', 101, 'zh', '香煎鮭魚配時蔬'), | |||||
('fb_menu', 'Menu_Item_Description', 102, 'zh', '黑椒牛排佐蘑菇醬'), | |||||
('fb_menu', 'Menu_Item_Description', 103, 'zh', '泰國青咖哩雞'), | |||||
('fb_menu', 'Menu_Item_Description', 104, 'zh', '義式肉醬麵配帕瑪森起司'), | |||||
('fb_menu', 'Menu_Item_Description', 105, 'zh', '地中海風味沙拉'), | |||||
('fb_menu', 'Menu_Item_Description', 201, 'zh', '清蒸鱸魚配薑蔥'), | |||||
('fb_menu', 'Menu_Item_Description', 202, 'zh', '紅燒獅子頭'), | |||||
('fb_menu', 'Menu_Item_Description', 203, 'zh', '宮保雞丁配花生米'); | |||||
INSERT INTO i18n (table_name, field_name, record_id, language, value) VALUES | |||||
('fb_menu', 'Menu_Item_Description', 101, 'en', 'Pan-fried Salmon with Seasonal Vegetables'), | |||||
('fb_menu', 'Menu_Item_Description', 102, 'en', 'Black Pepper Steak with Mushroom Sauce'), | |||||
('fb_menu', 'Menu_Item_Description', 103, 'en', 'Thai Green Curry Chicken'), | |||||
('fb_menu', 'Menu_Item_Description', 104, 'en', 'Spaghetti Bolognese with Parmesan Cheese'), | |||||
('fb_menu', 'Menu_Item_Description', 105, 'en', 'Mediterranean Salad'), | |||||
('fb_menu', 'Menu_Item_Description', 201, 'en', 'Steamed Sea Bass with Ginger and Spring Onion'), | |||||
('fb_menu', 'Menu_Item_Description', 202, 'en', 'Braised Lion Head Meatballs'), | |||||
('fb_menu', 'Menu_Item_Description', 203, 'en', 'Kung Pao Chicken with Peanuts'); |
@@ -0,0 +1,20 @@ | |||||
--liquibase formatted sql | |||||
--changeset terence:create-i18n-table | |||||
--comment: Create i18n table | |||||
CREATE TABLE `I18n` ( | |||||
`id` int NOT NULL AUTO_INCREMENT, | |||||
`table_name` varchar(50) NOT NULL, | |||||
`field_name` varchar(50) NOT NULL , | |||||
`record_id` int NOT NULL, | |||||
`language` varchar(10) NOT NULL, | |||||
`value` text NOT NULL, | |||||
`created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, | |||||
`modified` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP, | |||||
`createdBy` int DEFAULT NULL, | |||||
`modifiedBy` int DEFAULT NULL, | |||||
PRIMARY KEY (`id`), | |||||
UNIQUE KEY `UK_translation` (`table_name`, `field_name`, `record_id`, `language`), | |||||
KEY `IDX_table_field` (`table_name`, `field_name`), | |||||
KEY `IDX_language` (`language`) | |||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; |
@@ -0,0 +1,31 @@ | |||||
--liquibase formatted sql | |||||
--changeset terence:create-i18n-table | |||||
--comment: Create i18n table | |||||
UPDATE fb_outlets SET FB_outlet_district = CASE id | |||||
WHEN 1 THEN 'Admiralty' | |||||
WHEN 2 THEN 'Wan Chai' | |||||
WHEN 3 THEN 'Kwun Tong' | |||||
WHEN 4 THEN 'Kwun Tong' | |||||
END | |||||
WHERE id IN (1,2,3,4); | |||||
UPDATE fb_outlets SET FB_outlet_address = CASE id | |||||
WHEN 1 THEN 'Shop A, No.1-41, G/F, Admiralty Centre, 18 Harcourt Road' | |||||
WHEN 2 THEN 'Shop G11-17 ,G/F, C.c. Wu Building,11-17, 302-308, Hennessy Road' | |||||
WHEN 3 THEN 'Speedy Industrial Building, 2nd Floor, Room B, 114, Kwun Tong Road' | |||||
WHEN 4 THEN 'Shop No. L2-1 Level 2, apm, 418 Kwun Tong Rd' | |||||
END | |||||
WHERE id IN (1,2,3,4); | |||||
INSERT INTO i18n (table_name, field_name, record_id, language, value) VALUES | |||||
('fb_outlets', 'FB_outlet_district', 1, 'zh', '中環'), | |||||
('fb_outlets', 'FB_outlet_district', 2, 'zh', '灣仔'), | |||||
('fb_outlets', 'FB_outlet_district', 3, 'zh', '觀塘'), | |||||
('fb_outlets', 'FB_outlet_district', 4, 'zh', '觀塘'); | |||||
INSERT INTO i18n (table_name, field_name, record_id, language, value) VALUES | |||||
('fb_outlets', 'FB_outlet_address', 1, 'en', 'Shop A, No.1-41, G/F, Admiralty Centre, 18 Harcourt Road'), | |||||
('fb_outlets', 'FB_outlet_address', 2, 'en', 'Shop G11-17 ,G/F, C.c. Wu Building,11-17, 302-308, Hennessy Road'), | |||||
('fb_outlets', 'FB_outlet_address', 3, 'en', 'Speedy Industrial Building, 2nd Floor, Room B, 114, Kwun Tong Road'), | |||||
('fb_outlets', 'FB_outlet_address', 4, 'en', 'Shop No. L2-1 Level 2, apm, 418 Kwun Tong Rd'); |
@@ -0,0 +1,15 @@ | |||||
--liquibase formatted sql | |||||
--changeset terence:create-i18n-table | |||||
--comment: Create i18n table | |||||
INSERT INTO i18n (table_name, field_name, record_id, language, value) VALUES | |||||
('fb_outlets', 'FB_outlet_district', 1, 'en', 'Admiralty'), | |||||
('fb_outlets', 'FB_outlet_district', 2, 'en', 'Wan Chai'), | |||||
('fb_outlets', 'FB_outlet_district', 3, 'en', 'Kwun Tong'), | |||||
('fb_outlets', 'FB_outlet_district', 4, 'en', 'Kwun Tong'); | |||||
INSERT INTO i18n (table_name, field_name, record_id, language, value) VALUES | |||||
('fb_outlets', 'FB_outlet_address', 1, 'zh', '夏愨道18號海富中心地下1-41號A鋪'), | |||||
('fb_outlets', 'FB_outlet_address', 2, 'zh', '灣仔軒尼詩道302-308號皇后大廈地下G11-17號鋪'), | |||||
('fb_outlets', 'FB_outlet_address', 3, 'zh', '觀塘鯉魚門道114號迅達工業大廈2樓B室'), | |||||
('fb_outlets', 'FB_outlet_address', 4, 'zh', '觀塘鯉魚門道418號apm2樓L2-1號鋪'); |
@@ -0,0 +1,24 @@ | |||||
--liquibase formatted sql | |||||
--changeset terence:create-i18n-table | |||||
--comment: Create i18n table | |||||
INSERT INTO i18n (table_name, field_name, record_id, language, value) VALUES | |||||
('fb_outlets', 'FB_outlet_district', 7, 'en', 'Central'), | |||||
('fb_outlets', 'FB_outlet_district', 8, 'en', 'Causeway Bay'), | |||||
('fb_outlets', 'FB_outlet_district', 9, 'en', 'Tsim Sha Tsui'), | |||||
('fb_outlets', 'FB_outlet_district', 10, 'en', 'Sha Tin'), | |||||
('fb_outlets', 'FB_outlet_district', 7, 'zh', '中環'), | |||||
('fb_outlets', 'FB_outlet_district', 8, 'zh', '銅鑼灣'), | |||||
('fb_outlets', 'FB_outlet_district', 9, 'zh', '尖沙咀'), | |||||
('fb_outlets', 'FB_outlet_district', 10, 'zh', '沙田'), | |||||
('fb_outlets', 'FB_outlet_address', 7, 'en', 'Central Financial Street 88, 1st Floor'), | |||||
('fb_outlets', 'FB_outlet_address', 8, 'en', 'Causeway Bay Times Square 2nd Floor'), | |||||
('fb_outlets', 'FB_outlet_address', 9, 'en', 'Tsim Sha Tsui Guangdong Road 30'), | |||||
('fb_outlets', 'FB_outlet_address', 10, 'en', 'Sha Tin New City Plaza 5th Floor'), | |||||
('fb_outlets', 'FB_outlet_address', 7, 'zh', '金融街88號1樓'), | |||||
('fb_outlets', 'FB_outlet_address', 8, 'zh', '時代廣場2樓'), | |||||
('fb_outlets', 'FB_outlet_address', 9, 'zh', '廣東道30號'), | |||||
('fb_outlets', 'FB_outlet_address', 10, 'zh', '新城市廣場52樓'); |
@@ -0,0 +1,15 @@ | |||||
--liquibase formatted sql | |||||
--changeset terence:create-i18n-table | |||||
--comment: Create i18n table | |||||
CREATE TABLE `UserAccessControl` ( | |||||
`UserId` int NOT NULL AUTO_INCREMENT, | |||||
`FunctionId` int NOT NULL, | |||||
`Created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, | |||||
`Modified` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP, | |||||
`CreatedBy` int DEFAULT NULL, | |||||
`ModifiedBy` int DEFAULT NULL, | |||||
PRIMARY KEY (`UserId`, `FunctionId`) | |||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; |
@@ -0,0 +1,63 @@ | |||||
--liquibase formatted sql | |||||
--changeset terence:create-i18n-table | |||||
--comment: Create i18n table | |||||
drop table if exists authority; | |||||
CREATE TABLE `authority` ( | |||||
`id` int NOT NULL AUTO_INCREMENT, | |||||
`authority` varchar(100) NOT NULL, | |||||
`name` varchar(255) NOT NULL, | |||||
`module` varchar(100) DEFAULT NULL, | |||||
`description` varchar(500) DEFAULT NULL, | |||||
PRIMARY KEY (`id`), | |||||
UNIQUE KEY `uk_authority` (`authority`) | |||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; | |||||
INSERT INTO authority (id, authority, name, module, description) VALUES | |||||
-- User Management | |||||
(1, 'MAINTAIN_USER', 'Maintain User', 'USER_MANAGEMENT', 'Maintain user master data'), | |||||
(2, 'VIEW_USER', 'View User', 'USER_MANAGEMENT', 'View user master data'), | |||||
(3, 'MAINTAIN_GROUP', 'Maintain User Group', 'USER_MANAGEMENT', 'Maintain user group master data'), | |||||
(4, 'VIEW_USER_GROUP', 'View User Group', 'USER_MANAGEMENT', 'View user group master data'), | |||||
-- Food and Menu Management | |||||
(5, 'MAINTAIN_FOOD_MENU', 'Maintain Food Menu', 'FOOD_MANAGEMENT', 'Maintain food and menu data'), | |||||
(6, 'VIEW_FOOD_MENU', 'View Food Menu', 'FOOD_MANAGEMENT', 'View food and menu data'), | |||||
(7, 'MAINTAIN_FOOD_INTAKE', 'Maintain Food Intake', 'FOOD_MANAGEMENT', 'Maintain food intake records'), | |||||
(8, 'VIEW_FOOD_INTAKE', 'View Food Intake', 'FOOD_MANAGEMENT', 'View food intake records'), | |||||
-- Nutrition Management | |||||
(9, 'MAINTAIN_NUTRITION_STANDARD', 'Maintain Nutrition Standard', 'NUTRITION_MANAGEMENT', 'Maintain nutrition standards'), | |||||
(10, 'VIEW_NUTRITION_STANDARD', 'View Nutrition Standard', 'NUTRITION_MANAGEMENT', 'View nutrition standards'), | |||||
(11, 'MAINTAIN_NUTRITION_ANALYSIS', 'Maintain Nutrition Analysis', 'NUTRITION_MANAGEMENT', 'Maintain nutrition analysis'), | |||||
(12, 'VIEW_NUTRITION_ANALYSIS', 'View Nutrition Analysis', 'NUTRITION_MANAGEMENT', 'View nutrition analysis'), | |||||
-- Health Data Management | |||||
(13, 'MAINTAIN_HEALTH_DATA', 'Maintain Health Data', 'HEALTH_MANAGEMENT', 'Maintain health development data'), | |||||
(14, 'VIEW_HEALTH_DATA', 'View Health Data', 'HEALTH_MANAGEMENT', 'View health development data'), | |||||
(15, 'MAINTAIN_ALLERGY_DATA', 'Maintain Allergy Data', 'HEALTH_MANAGEMENT', 'Maintain allergy data'), | |||||
(16, 'VIEW_ALLERGY_DATA', 'View Allergy Data', 'HEALTH_MANAGEMENT', 'View allergy data'), | |||||
-- AI Model Management | |||||
(17, 'MAINTAIN_AI_MODEL', 'Maintain AI Model', 'AI_MANAGEMENT', 'Maintain food AI models'), | |||||
(18, 'VIEW_AI_MODEL', 'View AI Model', 'AI_MANAGEMENT', 'View food AI models'), | |||||
-- Report Generation | |||||
(19, 'G_NUTRITION_TREND_REPORT', 'Generate Nutrition Trend Report', 'REPORT_MANAGEMENT', 'Generate nutrition trend analysis reports'), | |||||
(20, 'G_HEALTH_STATISTICS_REPORT', 'Generate Health Statistics Report', 'REPORT_MANAGEMENT', 'Generate health statistics reports'), | |||||
(21, 'G_FOOD_LEFTOVER_REPORT', 'Generate Food Leftover Report', 'REPORT_MANAGEMENT', 'Generate food leftover analysis reports'), | |||||
-- F&B Management | |||||
(22, 'MAINTAIN_FB_OPERATOR', 'Maintain Food Operator', 'FB_MANAGEMENT', 'Maintain F&B operator data'), | |||||
(23, 'VIEW_FB_OPERATOR', 'View Food Operator', 'FB_MANAGEMENT', 'View F&B operator data'), | |||||
(24, 'MAINTAIN_FB_OUTLET', 'Maintain Food Outlet', 'FB_MANAGEMENT', 'Maintain F&B outlet data'), | |||||
(25, 'VIEW_FB_OUTLET', 'View Food Outlet', 'FB_MANAGEMENT', 'View F&B outlet data'), | |||||
-- Dietary Advice Management | |||||
(26, 'MAINTAIN_DIETARY_ADVICE', 'Maintain Dietary Advice', 'ADVICE_MANAGEMENT', 'Maintain dietary advice data'), | |||||
(27, 'VIEW_DIETARY_ADVICE', 'View Dietary Advice', 'ADVICE_MANAGEMENT', 'View dietary advice data'), | |||||
-- Access Control Management | |||||
(28, 'MAINTAIN_ACCESS_CONTROL', 'Maintain Access Control', 'ACCESS_MANAGEMENT', 'Maintain access control settings'), | |||||
(29, 'VIEW_ACCESS_CONTROL', 'View Access Control', 'ACCESS_MANAGEMENT', 'View access control settings'), | |||||
(30, 'MAINTAIN_ACCESS_DELEGATION', 'Maintain Access Delegation', 'ACCESS_MANAGEMENT', 'Maintain access delegation settings'), | |||||
(31, 'VIEW_ACCESS_DELEGATION', 'View Access Delegation', 'ACCESS_MANAGEMENT', 'View access delegation settings'); |
@@ -0,0 +1,63 @@ | |||||
--liquibase formatted sql | |||||
--changeset terence:create-i18n-table | |||||
--comment: Create i18n table | |||||
drop table if exists authority; | |||||
CREATE TABLE `authority` ( | |||||
`id` int NOT NULL AUTO_INCREMENT, | |||||
`authority` varchar(100) NOT NULL, | |||||
`name` varchar(255) NOT NULL, | |||||
`module` varchar(100) DEFAULT NULL, | |||||
`description` varchar(500) DEFAULT NULL, | |||||
PRIMARY KEY (`id`), | |||||
UNIQUE KEY `uk_authority` (`authority`) | |||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; | |||||
INSERT INTO authority (id, authority, name, module, description) VALUES | |||||
-- User Management | |||||
(1, 'MAINTAIN_USER', 'Maintain User', null, null), | |||||
(2, 'VIEW_USER', 'View User', null, null), | |||||
(3, 'MAINTAIN_GROUP', 'Maintain User Group', null, null), | |||||
(4, 'VIEW_USER_GROUP', 'View User Group', null, null), | |||||
-- Food and Menu Management | |||||
(5, 'MAINTAIN_FOOD_MENU', 'Maintain Food Menu' , null, null), | |||||
(6, 'VIEW_FOOD_MENU', 'View Food Menu', null, null), | |||||
(7, 'MAINTAIN_FOOD_INTAKE', 'Maintain Food Intake', null, null), | |||||
(8, 'VIEW_FOOD_INTAKE', 'View Food Intake', null, null), | |||||
-- Nutrition Management | |||||
(9, 'MAINTAIN_NUTRITION_STANDARD', 'Maintain Nutrition Standard', null, null), | |||||
(10, 'VIEW_NUTRITION_STANDARD', 'View Nutrition Standard', null, null), | |||||
(11, 'MAINTAIN_NUTRITION_ANALYSIS', 'Maintain Nutrition Analysis', null, null), | |||||
(12, 'VIEW_NUTRITION_ANALYSIS', 'View Nutrition Analysis', null, null), | |||||
-- Health Data Management | |||||
(13, 'MAINTAIN_HEALTH_DATA', 'Maintain Health Data', null, null), | |||||
(14, 'VIEW_HEALTH_DATA', 'View Health Data', null, null), | |||||
(15, 'MAINTAIN_ALLERGY_DATA', 'Maintain Allergy Data', null, null), | |||||
(16, 'VIEW_ALLERGY_DATA', 'View Allergy Data', null, null), | |||||
-- AI Model Management | |||||
(17, 'MAINTAIN_AI_MODEL', 'Maintain AI Model', null, null), | |||||
(18, 'VIEW_AI_MODEL', 'View AI Model', null, null), | |||||
-- Report Generation | |||||
(19, 'G_NUTRITION_TREND_REPORT', 'Generate Nutrition Trend Report', null, null), | |||||
(20, 'G_HEALTH_STATISTICS_REPORT', 'Generate Health Statistics Report', null, null), | |||||
(21, 'G_FOOD_LEFTOVER_REPORT', 'Generate Food Leftover Report', null, null), | |||||
-- F&B Management | |||||
(22, 'MAINTAIN_FB_OPERATOR', 'Maintain Food Operator', null, null), | |||||
(23, 'VIEW_FB_OPERATOR', 'View Food Operator', null, null), | |||||
(24, 'MAINTAIN_FB_OUTLET', 'Maintain Food Outlet', null, null), | |||||
(25, 'VIEW_FB_OUTLET', 'View Food Outlet', null, null), | |||||
-- Dietary Advice Management | |||||
(26, 'MAINTAIN_DIETARY_ADVICE', 'Maintain Dietary Advice', null, null), | |||||
(27, 'VIEW_DIETARY_ADVICE', 'View Dietary Advice', null, null), | |||||
-- Access Control Management | |||||
(28, 'MAINTAIN_ACCESS_CONTROL', 'Maintain Access Control', null, null), | |||||
(29, 'VIEW_ACCESS_CONTROL', 'View Access Control', null, null), | |||||
(30, 'MAINTAIN_ACCESS_DELEGATION', 'Maintain Access Delegation', null, null), | |||||
(31, 'VIEW_ACCESS_DELEGATION', 'View Access Delegation', null, null); |
@@ -0,0 +1,67 @@ | |||||
--liquibase formatted sql | |||||
--changeset terence:create-i18n-table | |||||
--comment: Insert user authority mapping | |||||
-- System Admin | |||||
INSERT INTO user_authority (userId, authId) VALUES | |||||
-- user and access control management | |||||
(2, 1), -- MAINTAIN_USER | |||||
(1, 2), -- VIEW_USER | |||||
(1, 3), -- MAINTAIN_GROUP | |||||
(1, 4), -- VIEW_USER_GROUP | |||||
(1, 28), -- MAINTAIN_ACCESS_CONTROL | |||||
(1, 29), -- VIEW_ACCESS_CONTROL | |||||
(1, 30), -- MAINTAIN_ACCESS_DELEGATION | |||||
(1, 31), -- VIEW_ACCESS_DELEGATION | |||||
-- AI和餐饮管理 | |||||
(1, 17), -- MAINTAIN_AI_MODEL | |||||
(1, 18), -- VIEW_AI_MODEL | |||||
(1, 22), -- MAINTAIN_FB_OPERATOR | |||||
(1, 23), -- VIEW_FB_OPERATOR | |||||
(1, 24), -- MAINTAIN_FB_OUTLET | |||||
(1, 25); -- VIEW_FB_OUTLET | |||||
-- School Admin | |||||
INSERT INTO user_authority (userId, authId) VALUES | |||||
-- basic view permission | |||||
(2, 2), -- VIEW_USER | |||||
(2, 4), -- VIEW_USER_GROUP | |||||
(2, 29), -- VIEW_ACCESS_CONTROL | |||||
-- report permission | |||||
(2, 19), -- G_NUTRITION_TREND_REPORT | |||||
(2, 20), -- G_HEALTH_STATISTICS_REPORT | |||||
(2, 21), -- G_FOOD_LEFTOVER_REPORT | |||||
-- food and menu view permission | |||||
(2, 6), -- VIEW_FOOD_MENU | |||||
(2, 23), -- VIEW_FB_OPERATOR | |||||
(2, 25); -- VIEW_FB_OUTLET | |||||
-- Student User | |||||
INSERT INTO user_authority (userId, authId) VALUES | |||||
-- personal data management | |||||
(9, 7), -- MAINTAIN_FOOD_INTAKE | |||||
(9, 8), -- VIEW_FOOD_INTAKE | |||||
(9, 13), -- MAINTAIN_HEALTH_DATA | |||||
(9, 14), -- VIEW_HEALTH_DATA | |||||
(9, 15), -- MAINTAIN_ALLERGY_DATA | |||||
(9, 16), -- VIEW_ALLERGY_DATA | |||||
-- view permission | |||||
(9, 6), -- VIEW_FOOD_MENU | |||||
(9, 10), -- VIEW_NUTRITION_STANDARD | |||||
(9, 12), -- VIEW_NUTRITION_ANALYSIS | |||||
(9, 27); -- VIEW_DIETARY_ADVICE | |||||
-- Nutritionist/Health Advisor | |||||
INSERT INTO user_authority (userId, authId) VALUES | |||||
-- nutrition and health management | |||||
(8, 11), -- MAINTAIN_NUTRITION_ANALYSIS | |||||
(8, 12), -- VIEW_NUTRITION_ANALYSIS | |||||
(8, 26), -- MAINTAIN_DIETARY_ADVICE | |||||
(8, 27), -- VIEW_DIETARY_ADVICE | |||||
-- data view permission | |||||
(8, 14), -- VIEW_HEALTH_DATA | |||||
(8, 16), -- VIEW_ALLERGY_DATA | |||||
(8, 8), -- VIEW_FOOD_INTAKE | |||||
-- report generation | |||||
(8, 19), -- G_NUTRITION_TREND_REPORT | |||||
(8, 20); -- G_HEALTH_STATISTICS_REPORT |
@@ -0,0 +1,12 @@ | |||||
--liquibase formatted sql | |||||
--changeset terence:create-i18n-table | |||||
--comment: Create i18n table | |||||
INSERT INTO authority (id, authority, name, module, description) VALUES | |||||
-- Access Control Management | |||||
(32, 'MAINTAIN_MENU_ITEM', 'Maintain Menu Item', null, null), | |||||
(33, 'VIEW_MENU_ITEM', 'View Menu Item', null, null), | |||||
(34, 'MAINTAIN_INGREDIENT', 'Maintain Ingredient', null, null), | |||||
(35, 'VIEW_INGREDIENT', 'View Ingredient', null, null), | |||||
(36, 'MAINTAIN_MENU_OUTLET', 'Maintain Menu Outlet', null, null), | |||||
(37, 'VIEW_MENU_OUTLET', 'View Menu Outlet', null, null); |
@@ -0,0 +1,61 @@ | |||||
--liquibase formatted sql | |||||
--changeset terence:62-insert-fb-permissions | |||||
--comment: Insert F&B related permissions and user authorities | |||||
-- 插入权限数据(添加条件检查) | |||||
INSERT INTO authority (id, authority, name, module, description) | |||||
SELECT 38, 'MAINTAIN_FB_OPERATOR', 'Maintain F&B Operator', 'F&B', 'Permission to maintain F&B operator information' | |||||
WHERE NOT EXISTS (SELECT 1 FROM authority WHERE authority = 'MAINTAIN_FB_OPERATOR'); | |||||
INSERT INTO authority (id, authority, name, module, description) | |||||
SELECT 39, 'VIEW_FB_OPERATOR', 'View F&B Operator', 'F&B', 'Permission to view F&B operator information' | |||||
WHERE NOT EXISTS (SELECT 1 FROM authority WHERE authority = 'VIEW_FB_OPERATOR'); | |||||
INSERT INTO authority (id, authority, name, module, description) | |||||
SELECT 40, 'MAINTAIN_FB_OUTLET', 'Maintain F&B Outlet', 'F&B', 'Permission to maintain F&B outlet information' | |||||
WHERE NOT EXISTS (SELECT 1 FROM authority WHERE authority = 'MAINTAIN_FB_OUTLET'); | |||||
INSERT INTO authority (id, authority, name, module, description) | |||||
SELECT 41, 'VIEW_FB_OUTLET', 'View F&B Outlet', 'F&B', 'Permission to view F&B outlet information' | |||||
WHERE NOT EXISTS (SELECT 1 FROM authority WHERE authority = 'VIEW_FB_OUTLET'); | |||||
INSERT INTO authority (id, authority, name, module, description) | |||||
SELECT 42, 'MAINTAIN_MENU_OUTLET', 'Maintain Menu Outlet', 'F&B', 'Permission to maintain menu-outlet relationship' | |||||
WHERE NOT EXISTS (SELECT 1 FROM authority WHERE authority = 'MAINTAIN_MENU_OUTLET'); | |||||
INSERT INTO authority (id, authority, name, module, description) | |||||
SELECT 43, 'VIEW_MENU_OUTLET', 'View Menu Outlet', 'F&B', 'Permission to view menu-outlet relationship' | |||||
WHERE NOT EXISTS (SELECT 1 FROM authority WHERE authority = 'VIEW_MENU_OUTLET'); | |||||
-- 插入用户权限关联(添加条件检查) | |||||
INSERT INTO user_authority (userId, authId) | |||||
SELECT 6, 38 | |||||
WHERE NOT EXISTS (SELECT 1 FROM user_authority WHERE userId = 6 AND authId = 38); | |||||
INSERT INTO user_authority (userId, authId) | |||||
SELECT 6, 39 | |||||
WHERE NOT EXISTS (SELECT 1 FROM user_authority WHERE userId = 6 AND authId = 39); | |||||
INSERT INTO user_authority (userId, authId) | |||||
SELECT 6, 40 | |||||
WHERE NOT EXISTS (SELECT 1 FROM user_authority WHERE userId = 6 AND authId = 40); | |||||
INSERT INTO user_authority (userId, authId) | |||||
SELECT 6, 41 | |||||
WHERE NOT EXISTS (SELECT 1 FROM user_authority WHERE userId = 6 AND authId = 41); | |||||
INSERT INTO user_authority (userId, authId) | |||||
SELECT 6, 42 | |||||
WHERE NOT EXISTS (SELECT 1 FROM user_authority WHERE userId = 6 AND authId = 42); | |||||
INSERT INTO user_authority (userId, authId) | |||||
SELECT 6, 43 | |||||
WHERE NOT EXISTS (SELECT 1 FROM user_authority WHERE userId = 6 AND authId = 43); | |||||
INSERT INTO user_authority (userId, authId) | |||||
SELECT 6, 32 | |||||
WHERE NOT EXISTS (SELECT 1 FROM user_authority WHERE userId = 6 AND authId = 32); | |||||
INSERT INTO user_authority (userId, authId) | |||||
SELECT 6, 33 | |||||
WHERE NOT EXISTS (SELECT 1 FROM user_authority WHERE userId = 6 AND authId = 33); |
@@ -0,0 +1,25 @@ | |||||
--liquibase formatted sql | |||||
--changeset terence:62-insert-fb-permissions | |||||
--comment: Insert F&B related permissions and user authorities | |||||
-- 插入权限数据(使用INSERT IGNORE避免重复) | |||||
INSERT IGNORE INTO authority (id, authority, name, module, description) | |||||
VALUES | |||||
(38, 'MAINTAIN_FB_OPERATOR', 'Maintain F&B Operator', 'F&B', 'Permission to maintain F&B operator information'), | |||||
(39, 'VIEW_FB_OPERATOR', 'View F&B Operator', 'F&B', 'Permission to view F&B operator information'), | |||||
(40, 'MAINTAIN_FB_OUTLET', 'Maintain F&B Outlet', 'F&B', 'Permission to maintain F&B outlet information'), | |||||
(41, 'VIEW_FB_OUTLET', 'View F&B Outlet', 'F&B', 'Permission to view F&B outlet information'), | |||||
(42, 'MAINTAIN_MENU_OUTLET', 'Maintain Menu Outlet', 'F&B', 'Permission to maintain menu-outlet relationship'), | |||||
(43, 'VIEW_MENU_OUTLET', 'View Menu Outlet', 'F&B', 'Permission to view menu-outlet relationship'); | |||||
-- 插入用户权限关联(使用INSERT IGNORE避免重复) | |||||
INSERT IGNORE INTO user_authority (userId, authId) | |||||
VALUES | |||||
(6, 38), | |||||
(6, 39), | |||||
(6, 40), | |||||
(6, 41), | |||||
(6, 42), | |||||
(6, 43), | |||||
(6, 32), | |||||
(6, 33); |
@@ -0,0 +1,66 @@ | |||||
--liquibase formatted sql | |||||
--changeset terence:62-insert-fb-permissions | |||||
--comment: Insert F&B related permissions and user authorities | |||||
drop table if exists authority; | |||||
CREATE TABLE `authority` ( | |||||
`id` int NOT NULL AUTO_INCREMENT, | |||||
`authority` varchar(100) NOT NULL, | |||||
`name` varchar(255) NOT NULL, | |||||
`module` varchar(100) DEFAULT NULL, | |||||
`description` varchar(500) DEFAULT NULL, | |||||
PRIMARY KEY (`id`), | |||||
UNIQUE KEY `uk_authority` (`authority`) | |||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; | |||||
INSERT INTO authority (id, authority, name, module, description) VALUES | |||||
-- User Management | |||||
(1, 'MAINTAIN_USER', 'Maintain User', null, null), | |||||
(2, 'VIEW_USER', 'View User', null, null), | |||||
(3, 'MAINTAIN_GROUP', 'Maintain User Group', null, null), | |||||
(4, 'VIEW_USER_GROUP', 'View User Group', null, null), | |||||
-- Food and Menu Management | |||||
(5, 'MAINTAIN_FOOD_MENU', 'Maintain Food Menu' , null, null), | |||||
(6, 'VIEW_FOOD_MENU', 'View Food Menu', null, null), | |||||
(7, 'MAINTAIN_FOOD_INTAKE', 'Maintain Food Intake', null, null), | |||||
(8, 'VIEW_FOOD_INTAKE', 'View Food Intake', null, null), | |||||
-- Nutrition Management | |||||
(9, 'MAINTAIN_NUTRITION_STANDARD', 'Maintain Nutrition Standard', null, null), | |||||
(10, 'VIEW_NUTRITION_STANDARD', 'View Nutrition Standard', null, null), | |||||
(11, 'MAINTAIN_NUTRITION_ANALYSIS', 'Maintain Nutrition Analysis', null, null), | |||||
(12, 'VIEW_NUTRITION_ANALYSIS', 'View Nutrition Analysis', null, null), | |||||
-- Health Data Management | |||||
(13, 'MAINTAIN_HEALTH_DATA', 'Maintain Health Data', null, null), | |||||
(14, 'VIEW_HEALTH_DATA', 'View Health Data', null, null), | |||||
(15, 'MAINTAIN_ALLERGY_DATA', 'Maintain Allergy Data', null, null), | |||||
(16, 'VIEW_ALLERGY_DATA', 'View Allergy Data', null, null), | |||||
-- AI Model Management | |||||
(17, 'MAINTAIN_AI_MODEL', 'Maintain AI Model', null, null), | |||||
(18, 'VIEW_AI_MODEL', 'View AI Model', null, null), | |||||
-- Report Generation | |||||
(19, 'G_NUTRITION_TREND_REPORT', 'Generate Nutrition Trend Report', null, null), | |||||
(20, 'G_HEALTH_STATISTICS_REPORT', 'Generate Health Statistics Report', null, null), | |||||
(21, 'G_FOOD_LEFTOVER_REPORT', 'Generate Food Leftover Report', null, null), | |||||
-- F&B Management | |||||
(22, 'MAINTAIN_FB_OPERATOR', 'Maintain Food Operator', null, null), | |||||
(23, 'VIEW_FB_OPERATOR', 'View Food Operator', null, null), | |||||
(24, 'MAINTAIN_FB_OUTLET', 'Maintain Food Outlet', null, null), | |||||
(25, 'VIEW_FB_OUTLET', 'View Food Outlet', null, null), | |||||
-- Dietary Advice Management | |||||
(26, 'MAINTAIN_DIETARY_ADVICE', 'Maintain Dietary Advice', null, null), | |||||
(27, 'VIEW_DIETARY_ADVICE', 'View Dietary Advice', null, null), | |||||
-- Access Control Management | |||||
(28, 'MAINTAIN_ACCESS_CONTROL', 'Maintain Access Control', null, null), | |||||
(29, 'VIEW_ACCESS_CONTROL', 'View Access Control', null, null), | |||||
(30, 'MAINTAIN_ACCESS_DELEGATION', 'Maintain Access Delegation', null, null), | |||||
(31, 'VIEW_ACCESS_DELEGATION', 'View Access Delegation', null, null); | |||||
@@ -0,0 +1,66 @@ | |||||
--liquibase formatted sql | |||||
--changeset terence:62-insert-fb-permissions | |||||
--comment: Insert F&B related permissions and user authorities | |||||
drop table if exists authority; | |||||
CREATE TABLE `authority` ( | |||||
`id` int NOT NULL AUTO_INCREMENT, | |||||
`authority` varchar(100) NOT NULL, | |||||
`name` varchar(255) NOT NULL, | |||||
`module` varchar(100) DEFAULT NULL, | |||||
`description` varchar(500) DEFAULT NULL, | |||||
PRIMARY KEY (`id`), | |||||
UNIQUE KEY `uk_authority` (`authority`) | |||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; | |||||
INSERT INTO authority (id, authority, name, module, description) VALUES | |||||
-- User Management | |||||
(1, 'MAINTAIN_USER', 'Maintain User', null, null), | |||||
(2, 'VIEW_USER', 'View User', null, null), | |||||
(3, 'MAINTAIN_GROUP', 'Maintain User Group', null, null), | |||||
(4, 'VIEW_USER_GROUP', 'View User Group', null, null), | |||||
-- Food and Menu Management | |||||
(5, 'MAINTAIN_FOOD_MENU', 'Maintain Food Menu' , null, null), | |||||
(6, 'VIEW_FOOD_MENU', 'View Food Menu', null, null), | |||||
(7, 'MAINTAIN_FOOD_INTAKE', 'Maintain Food Intake', null, null), | |||||
(8, 'VIEW_FOOD_INTAKE', 'View Food Intake', null, null), | |||||
-- Nutrition Management | |||||
(9, 'MAINTAIN_NUTRITION_STANDARD', 'Maintain Nutrition Standard', null, null), | |||||
(10, 'VIEW_NUTRITION_STANDARD', 'View Nutrition Standard', null, null), | |||||
(11, 'MAINTAIN_NUTRITION_ANALYSIS', 'Maintain Nutrition Analysis', null, null), | |||||
(12, 'VIEW_NUTRITION_ANALYSIS', 'View Nutrition Analysis', null, null), | |||||
-- Health Data Management | |||||
(13, 'MAINTAIN_HEALTH_DATA', 'Maintain Health Data', null, null), | |||||
(14, 'VIEW_HEALTH_DATA', 'View Health Data', null, null), | |||||
(15, 'MAINTAIN_ALLERGY_DATA', 'Maintain Allergy Data', null, null), | |||||
(16, 'VIEW_ALLERGY_DATA', 'View Allergy Data', null, null), | |||||
-- AI Model Management | |||||
(17, 'MAINTAIN_AI_MODEL', 'Maintain AI Model', null, null), | |||||
(18, 'VIEW_AI_MODEL', 'View AI Model', null, null), | |||||
-- Report Generation | |||||
(19, 'G_NUTRITION_TREND_REPORT', 'Generate Nutrition Trend Report', null, null), | |||||
(20, 'G_HEALTH_STATISTICS_REPORT', 'Generate Health Statistics Report', null, null), | |||||
(21, 'G_FOOD_LEFTOVER_REPORT', 'Generate Food Leftover Report', null, null), | |||||
-- F&B Management | |||||
(22, 'MAINTAIN_FB_OPERATOR', 'Maintain Food Operator', null, null), | |||||
(23, 'VIEW_FB_OPERATOR', 'View Food Operator', null, null), | |||||
(24, 'MAINTAIN_FB_OUTLET', 'Maintain Food Outlet', null, null), | |||||
(25, 'VIEW_FB_OUTLET', 'View Food Outlet', null, null), | |||||
-- Dietary Advice Management | |||||
(26, 'MAINTAIN_DIETARY_ADVICE', 'Maintain Dietary Advice', null, null), | |||||
(27, 'VIEW_DIETARY_ADVICE', 'View Dietary Advice', null, null), | |||||
-- Access Control Management | |||||
(28, 'MAINTAIN_ACCESS_CONTROL', 'Maintain Access Control', null, null), | |||||
(29, 'VIEW_ACCESS_CONTROL', 'View Access Control', null, null), | |||||
(30, 'MAINTAIN_ACCESS_DELEGATION', 'Maintain Access Delegation', null, null), | |||||
(31, 'VIEW_ACCESS_DELEGATION', 'View Access Delegation', null, null); | |||||
@@ -0,0 +1,16 @@ | |||||
--liquibase formatted sql | |||||
--changeset terence:62-insert-fb-permissions | |||||
--comment: Insert F&B related permissions and user authorities | |||||
INSERT INTO authority (id, authority, name, module, description) VALUES | |||||
-- Access Control Management | |||||
(32, 'MAINTAIN_MENU_ITEM', 'Maintain Menu Item', null, null), | |||||
(33, 'VIEW_MENU_ITEM', 'View Menu Item', null, null), | |||||
(34, 'MAINTAIN_INGREDIENT', 'Maintain Ingredient', null, null), | |||||
(35, 'VIEW_INGREDIENT', 'View Ingredient', null, null), | |||||
(36, 'MAINTAIN_MENU_OUTLET', 'Maintain Menu Outlet', null, null), | |||||
(37, 'VIEW_MENU_OUTLET', 'View Menu Outlet', null, null); | |||||
@@ -0,0 +1,17 @@ | |||||
--liquibase formatted sql | |||||
--changeset terence:62-insert-fb-permissions | |||||
--comment: Insert F&B related permissions and user authorities | |||||
ALTER TABLE `FB_Operator` DROP COLUMN created_at; | |||||
-- 添加 BaseEntity 需要的字段 | |||||
ALTER TABLE `FB_Operator` | |||||
ADD COLUMN `created` timestamp NULL, | |||||
ADD COLUMN `createdBy` varchar(255) NULL, | |||||
ADD COLUMN `modified` timestamp NULL, | |||||
ADD COLUMN `modifiedBy` varchar(255) NULL, | |||||
ADD COLUMN `deleted` bit(1) DEFAULT 0, | |||||
ADD COLUMN `version` int DEFAULT 0; | |||||
@@ -0,0 +1,17 @@ | |||||
--liquibase formatted sql | |||||
--changeset terence:62-insert-fb-permissions | |||||
--comment: Insert F&B related permissions and user authorities | |||||
ALTER TABLE `fb_outlets` DROP COLUMN created_at; | |||||
-- 添加 BaseEntity 需要的字段 | |||||
ALTER TABLE `fb_outlets` | |||||
ADD COLUMN `created` timestamp NULL, | |||||
ADD COLUMN `createdBy` varchar(255) NULL, | |||||
ADD COLUMN `modified` timestamp NULL, | |||||
ADD COLUMN `modifiedBy` varchar(255) NULL, | |||||
ADD COLUMN `deleted` bit(1) DEFAULT 0, | |||||
ADD COLUMN `version` int DEFAULT 0; | |||||
@@ -0,0 +1,13 @@ | |||||
--liquibase formatted sql | |||||
--changeset terence:62-insert-fb-permissions | |||||
--comment: Insert F&B related permissions and user authorities | |||||
-- 添加 BaseEntity 需要的字段 | |||||
ALTER TABLE `i18n` | |||||
ADD COLUMN `deleted` bit(1) DEFAULT 0, | |||||
ADD COLUMN `version` int DEFAULT 0; | |||||
@@ -0,0 +1,72 @@ | |||||
--liquibase formatted sql | |||||
--changeset terence:62-insert-fb-permissions | |||||
--comment: Insert F&B related permissions and user authorities | |||||
INSERT INTO user_authority (userId, authId) VALUES | |||||
-- ARestaurantManager (userid 6) - 可以查看和编辑 | |||||
(6, 5), -- MAINTAIN_FOOD_MENU | |||||
(6, 6), -- VIEW_FOOD_MENU | |||||
(6, 7), -- MAINTAIN_FOOD_INTAKE | |||||
(6, 8), -- VIEW_FOOD_INTAKE | |||||
(6, 32), -- MAINTAIN_MENU_ITEM | |||||
(6, 33), -- VIEW_MENU_ITEM | |||||
(6, 34), -- MAINTAIN_INGREDIENT | |||||
(6, 35), -- VIEW_INGREDIENT | |||||
(6, 36), -- MAINTAIN_MENU_OUTLET | |||||
(6, 37), -- VIEW_MENU_OUTLET | |||||
-- ARestaurantclerk (userid 8) - 只能查看 | |||||
(8, 6), -- VIEW_FOOD_MENU | |||||
(8, 8), -- VIEW_FOOD_INTAKE | |||||
(8, 33), -- VIEW_MENU_ITEM | |||||
(8, 35), -- VIEW_INGREDIENT | |||||
(8, 37), -- VIEW_MENU_OUTLET | |||||
-- BRestaurantManager (userid 10) - 可以查看和编辑 | |||||
(10, 5), -- MAINTAIN_FOOD_MENU | |||||
(10, 6), -- VIEW_FOOD_MENU | |||||
(10, 7), -- MAINTAIN_FOOD_INTAKE | |||||
(10, 8), -- VIEW_FOOD_INTAKE | |||||
(10, 32), -- MAINTAIN_MENU_ITEM | |||||
(10, 33), -- VIEW_MENU_ITEM | |||||
(10, 34), -- MAINTAIN_INGREDIENT | |||||
(10, 35), -- VIEW_INGREDIENT | |||||
(10, 36), -- MAINTAIN_MENU_OUTLET | |||||
(10, 37), -- VIEW_MENU_OUTLET | |||||
-- BRestaurantclerk (userid 11) - 只能查看 | |||||
(11, 6), -- VIEW_FOOD_MENU | |||||
(11, 8), -- VIEW_FOOD_INTAKE | |||||
(11, 33), -- VIEW_MENU_ITEM | |||||
(11, 35), -- VIEW_INGREDIENT | |||||
(11, 37), -- VIEW_MENU_OUTLET | |||||
-- ASchoolheadmaster (userid 12) - 可以查看和编辑 | |||||
(12, 13), -- MAINTAIN_HEALTH_DATA | |||||
(12, 14), -- VIEW_HEALTH_DATA | |||||
(12, 15), -- MAINTAIN_ALLERGY_DATA | |||||
(12, 16), -- VIEW_ALLERGY_DATA | |||||
(12, 26), -- MAINTAIN_DIETARY_ADVICE | |||||
(12, 27), -- VIEW_DIETARY_ADVICE | |||||
(12, 20), -- G_HEALTH_STATISTICS_REPORT | |||||
-- ASchoolteacher (userid 13) - 只能查看 | |||||
(13, 14), -- VIEW_HEALTH_DATA | |||||
(13, 16), -- VIEW_ALLERGY_DATA | |||||
(13, 27), -- VIEW_DIETARY_ADVICE | |||||
-- BSchoolheadmaster (userid 14) - 可以查看和编辑 | |||||
(14, 13), -- MAINTAIN_HEALTH_DATA | |||||
(14, 14), -- VIEW_HEALTH_DATA | |||||
(14, 15), -- MAINTAIN_ALLERGY_DATA | |||||
(14, 16), -- VIEW_ALLERGY_DATA | |||||
(14, 26), -- MAINTAIN_DIETARY_ADVICE | |||||
(14, 27), -- VIEW_DIETARY_ADVICE | |||||
(14, 20), -- G_HEALTH_STATISTICS_REPORT | |||||
-- BSchoolteacher (userid 15) - 只能查看 | |||||
(15, 14), -- VIEW_HEALTH_DATA | |||||
(15, 16), -- VIEW_ALLERGY_DATA | |||||
(15, 27); -- VIEW_DIETARY_ADVICE |
@@ -0,0 +1,25 @@ | |||||
--liquibase formatted sql | |||||
--changeset terence:62-insert-fb-permissions | |||||
--comment: Insert F&B related permissions and user authorities | |||||
INSERT INTO user_authority (userId, authId) VALUES | |||||
-- ARestaurantManager (userid 6) - 可以查看和编辑 | |||||
(6, 22), -- MAINTAIN_FB_OPERATOR | |||||
(6, 23), -- VIEW_FB_OPERATOR | |||||
(6, 24), -- MAINTAIN_FB_OUTLET | |||||
(6, 25), -- VIEW_FB_OUTLET | |||||
-- ARestaurantclerk (userid 8) - 只能查看 | |||||
(8, 23), -- VIEW_FOOD_MENU | |||||
(8, 25), -- VIEW_FOOD_INTAKE | |||||
-- BRestaurantManager (userid 10) - 可以查看和编辑 | |||||
(10, 22), -- MAINTAIN_FB_OPERATOR | |||||
(10, 23), -- VIEW_FB_OPERATOR | |||||
(10, 24), -- MAINTAIN_FB_OUTLET | |||||
(10, 25), -- VIEW_FB_OUTLET | |||||
-- BRestaurantclerk (userid 11) - 只能查看 | |||||
(11, 23), -- VIEW_FOOD_MENU | |||||
(11, 25); -- VIEW_FOOD_INTAKE | |||||
@@ -0,0 +1,24 @@ | |||||
--liquibase formatted sql | |||||
--changeset terence:72-create-fb_operator_and_organization_relationship-table | |||||
--comment: Insert F&B related permissions and user authorities | |||||
CREATE TABLE `fb_operator_and_organization_relationship` ( | |||||
`id` int NOT NULL AUTO_INCREMENT, | |||||
`FB_id` int NOT NULL, | |||||
`User_Grp_Org_ID` int NOT NULL, | |||||
`created` timestamp NULL, | |||||
`createdBy` varchar(255) NULL, | |||||
`modified` timestamp NULL, | |||||
`modifiedBy` varchar(255) NULL, | |||||
`deleted` bit(1) DEFAULT 0, | |||||
`version` int DEFAULT 0, | |||||
PRIMARY KEY (`id`) | |||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; | |||||
INSERT INTO `fb_operator_and_organization_relationship` | |||||
(id, FB_id, User_Grp_Org_ID) VALUES | |||||
-- User Management | |||||
(1, 1, 1), | |||||
(2, 2, 2), | |||||
(3, 3, 2), | |||||
(4, 4, 1); |
@@ -0,0 +1,8 @@ | |||||
--liquibase formatted sql | |||||
--changeset terence:72-create-fb_operator_and_organization_relationship-table | |||||
--comment: Insert F&B related permissions and user authorities | |||||
ALTER TABLE user_authority | |||||
DROP PRIMARY KEY, | |||||
ADD COLUMN id BIGINT AUTO_INCREMENT PRIMARY KEY FIRST, | |||||
ADD UNIQUE KEY unique_user_auth (userId, authId); |
@@ -0,0 +1,11 @@ | |||||
--liquibase formatted sql | |||||
--changeset terence:72-create-fb_operator_and_organization_relationship-table | |||||
--comment: Insert F&B related permissions and user authorities | |||||
ALTER TABLE user_authority | |||||
ADD COLUMN `created` timestamp NULL, | |||||
ADD COLUMN `createdBy` varchar(255) NULL, | |||||
ADD COLUMN `modified` timestamp NULL, | |||||
ADD COLUMN `modifiedBy` varchar(255) NULL, | |||||
ADD COLUMN `deleted` bit(1) DEFAULT 0, | |||||
ADD COLUMN `version` int DEFAULT 0; |
@@ -0,0 +1,11 @@ | |||||
--liquibase formatted sql | |||||
--changeset terence:72-create-fb_operator_and_organization_relationship-table | |||||
--comment: Insert F&B related permissions and user authorities | |||||
ALTER TABLE user_group_members | |||||
ADD COLUMN `created` timestamp NULL, | |||||
ADD COLUMN `createdBy` varchar(255) NULL, | |||||
ADD COLUMN `modified` timestamp NULL, | |||||
ADD COLUMN `modifiedBy` varchar(255) NULL, | |||||
ADD COLUMN `deleted` bit(1) DEFAULT 0, | |||||
ADD COLUMN `version` int DEFAULT 0; |
@@ -0,0 +1,25 @@ | |||||
--liquibase formatted sql | |||||
--changeset terence:72-create-fb_operator_and_organization_relationship-table | |||||
--comment: Insert F&B related permissions and user authorities | |||||
-- First, drop the foreign key constraint | |||||
ALTER TABLE user_group_members | |||||
DROP FOREIGN KEY user_group_members_ibfk_1; | |||||
-- Then drop the primary key | |||||
ALTER TABLE user_group_members | |||||
DROP PRIMARY KEY; | |||||
-- Add the new id column | |||||
ALTER TABLE user_group_members | |||||
ADD COLUMN id BIGINT AUTO_INCREMENT PRIMARY KEY; | |||||
-- Re-add the foreign key constraint | |||||
ALTER TABLE user_group_members | |||||
ADD CONSTRAINT user_group_members_ibfk_1 | |||||
FOREIGN KEY (User_Grp_Org_ID) | |||||
REFERENCES user_group_organization (User_Grp_Org_ID); | |||||
-- Add unique constraint for the original composite key | |||||
ALTER TABLE user_group_members | |||||
ADD CONSTRAINT uk_org_user UNIQUE (User_Grp_Org_ID, User_ID); |
@@ -0,0 +1,26 @@ | |||||
--liquibase formatted sql | |||||
--changeset terence:77-create-embedding-table | |||||
--comment: Insert F&B related permissions and user authorities | |||||
--liquibase formatted sql | |||||
--changeset yourname:001-create-menu_item-table | |||||
ALTER TABLE fb_menu | |||||
Add category VARCHAR(50), | |||||
Add price DECIMAL(10,2), | |||||
Add is_vegetarian BOOLEAN DEFAULT FALSE, | |||||
Add is_vegan BOOLEAN DEFAULT FALSE, | |||||
Add is_gluten_free BOOLEAN DEFAULT FALSE, | |||||
Add is_spicy BOOLEAN DEFAULT FALSE | |||||
--changeset yourname:004-create-menu_embedding-table | |||||
CREATE TABLE menu_item_base_embedding ( | |||||
embedding_id INT NOT NULL AUTO_INCREMENT, | |||||
FB_menu_id INT NOT NULL, | |||||
embedding_vector JSON NOT NULL, | |||||
embedding_text TEXT NOT NULL, | |||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, | |||||
PRIMARY KEY (embedding_id), | |||||
FOREIGN KEY (FB_menu_id) REFERENCES fb_menu(FB_menu_id) ON DELETE CASCADE | |||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; |
@@ -0,0 +1,18 @@ | |||||
--liquibase formatted sql | |||||
--changeset terence:77-create-embedding-table | |||||
--comment: Insert F&B related permissions and user authorities | |||||
--liquibase formatted sql | |||||
--changeset yourname:001-create-menu_item-table | |||||
CREATE TABLE fboperator ( | |||||
id INT AUTO_INCREMENT PRIMARY KEY, | |||||
FB_name VARCHAR(255) NOT NULL, | |||||
FB_operator_address VARCHAR(255), | |||||
FB_operator_phone VARCHAR(255), | |||||
created TIMESTAMP, | |||||
createdBy VARCHAR(255), | |||||
modified TIMESTAMP, | |||||
modifiedBy VARCHAR(255), | |||||
deleted BIT(1), | |||||
version INT | |||||
); |
@@ -0,0 +1,18 @@ | |||||
--liquibase formatted sql | |||||
--changeset terence:77-create-embedding-table | |||||
--comment: Insert F&B related permissions and user authorities | |||||
--liquibase formatted sql | |||||
--changeset yourname:001-create-menu_item-table | |||||
CREATE TABLE fb_operator_backup AS SELECT * FROM fb_operator; | |||||
ALTER TABLE fb_operator | |||||
ADD COLUMN FB_operator_id INT NULL AFTER FB_id; | |||||
ALTER TABLE fb_operator | |||||
CHANGE COLUMN FB_id id INT AUTO_INCREMENT; | |||||
RENAME TABLE fb_operator TO fb_brand; |
@@ -0,0 +1,30 @@ | |||||
--liquibase formatted sql | |||||
--changeset terence:77-create-embedding-table | |||||
--comment: Insert F&B related permissions and user authorities | |||||
--liquibase formatted sql | |||||
--changeset yourname:001-create-menu_item-table | |||||
CREATE TABLE fb_group ( | |||||
id INT AUTO_INCREMENT PRIMARY KEY, | |||||
FB_brand_id INT NOT NULL, | |||||
FB_group_name VARCHAR(255) NOT NULL, | |||||
created TIMESTAMP, | |||||
createdBy VARCHAR(255), | |||||
modified TIMESTAMP, | |||||
modifiedBy VARCHAR(255), | |||||
deleted BIT(1), | |||||
version INT | |||||
); | |||||
CREATE TABLE fb_group_relationship ( | |||||
id INT AUTO_INCREMENT PRIMARY KEY, | |||||
Fb_brand_id INT NOT NULL, | |||||
FB_group_id INT NOT NULL, | |||||
FB_menu_id INT NOT NULL, | |||||
created TIMESTAMP, | |||||
createdBy VARCHAR(255), | |||||
modified TIMESTAMP, | |||||
modifiedBy VARCHAR(255), | |||||
deleted BIT(1), | |||||
version INT | |||||
); |
@@ -0,0 +1,3 @@ | |||||
databaseChangeLog: | |||||
- includeAll: | |||||
path: classpath:/db/changelog/changes |
@@ -0,0 +1,30 @@ | |||||
Configutation: | |||||
name: Prod-Default | |||||
Properties: | |||||
Property: | |||||
name: log_location | |||||
value: /usr/springboot/logs/ | |||||
Appenders: | |||||
RollingFile: | |||||
- name: AllRollingFile_Appender | |||||
fileName: ${log_location}fhsmsc-all.log | |||||
filePattern: ${log_location}fhsmsc-all-%d{yyyy-MM-dd}.log.gz | |||||
PatternLayout: | |||||
Pattern: "%d %p [%l] - %m%n" | |||||
Policies: | |||||
TimeBasedTriggeringPolicy: | |||||
interval: 1 | |||||
modulate: true | |||||
DefaultRolloverStrategy: | |||||
Delete: | |||||
basePath: ${log_location} | |||||
maxDepth: 1 | |||||
IfFileName: | |||||
glob: fhsmsc-all-*.log.gz | |||||
IfLastModified: | |||||
age: P40D | |||||
Loggers: | |||||
Root: | |||||
level: info | |||||
AppenderRef: | |||||
- ref: AllRollingFile_Appender |
@@ -0,0 +1,23 @@ | |||||
Configutation: | |||||
name: Prod-Default | |||||
Properties: | |||||
Property: | |||||
name: log_location | |||||
value: C:/workspace/ | |||||
Appenders: | |||||
RollingFile: | |||||
name: RollingFile_Appender | |||||
fileName: ${log_location}fhsmsc-all.log | |||||
filePattern: ${log_location}fhsmsc-all.log.%i.gz | |||||
PatternLayout: | |||||
Pattern: "%d %p [%l] - %m%n" | |||||
Policies: | |||||
SizeBasedTriggeringPolicy: | |||||
size: 4096KB | |||||
DefaultRollOverStrategy: | |||||
max: 99 | |||||
Loggers: | |||||
Root: | |||||
level: info | |||||
AppenderRef: | |||||
- ref: RollingFile_Appender |
@@ -0,0 +1,17 @@ | |||||
Configutation: | |||||
name: Default | |||||
Properties: | |||||
Property: | |||||
name: log_pattern | |||||
value: "%d{yyyy-MM-dd HH:mm:ss.SSS} %5p ${hostName} --- [%15.15t] %-40.40c{1.} : %m%n%ex" | |||||
Appenders: | |||||
Console: | |||||
name: Console_Appender | |||||
target: SYSTEM_OUT | |||||
PatternLayout: | |||||
pattern: ${log_pattern} | |||||
Loggers: | |||||
Root: | |||||
level: info | |||||
AppenderRef: | |||||
- ref: Console_Appender |
@@ -0,0 +1,69 @@ | |||||
plugins { | |||||
id 'war' | |||||
id 'java' | |||||
id 'org.springframework.boot' version '3.1.9' | |||||
id 'io.spring.dependency-management' version '1.1.0' | |||||
} | |||||
group = 'com.ffii' | |||||
version = '0.0.1-SNAPSHOT' | |||||
java { | |||||
sourceCompatibility = '17' | |||||
} | |||||
repositories { | |||||
mavenCentral() | |||||
} | |||||
dependencies { | |||||
implementation 'org.springframework.boot:spring-boot-starter-data-jpa' | |||||
implementation 'org.springframework.boot:spring-boot-starter-mail' | |||||
implementation 'org.springframework.boot:spring-boot-starter-security' | |||||
implementation 'org.springframework.boot:spring-boot-starter-web' | |||||
implementation 'org.springframework.boot:spring-boot-starter-validation' | |||||
implementation 'org.springframework.boot:spring-boot-starter-log4j2' | |||||
implementation 'org.liquibase:liquibase-core' | |||||
implementation group: 'org.apache.commons', name: 'commons-lang3', version: '3.12.0' | |||||
implementation group: 'org.apache.poi', name: 'poi', version: '5.2.3' | |||||
implementation group: 'org.apache.poi', name: 'poi-ooxml', version: '5.2.3' | |||||
implementation group: 'org.apache.pdfbox', name: 'pdfbox', version: '3.0.0' | |||||
implementation group: 'jakarta.persistence', name: 'jakarta.persistence-api', version: '3.1.0' | |||||
implementation group: 'jakarta.annotation', name: 'jakarta.annotation-api', version: '2.1.1' | |||||
implementation group: 'jakarta.validation', name: 'jakarta.validation-api', version: '3.0.2' | |||||
implementation group: 'com.fasterxml.jackson.dataformat', name: 'jackson-dataformat-yaml', version: '2.15.2' | |||||
implementation group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.15.2' | |||||
implementation group: 'io.jsonwebtoken', name: 'jjwt-api', version: '0.11.5' | |||||
implementation group: 'io.jsonwebtoken', name: 'jjwt-impl', version: '0.11.5' | |||||
implementation group: 'io.jsonwebtoken', name: 'jjwt-jackson', version: '0.11.5' | |||||
implementation group: 'org.bytedeco', name: 'ffmpeg-platform', version: '5.1.2-1.5.8' | |||||
implementation group: 'org.bytedeco', name: 'javacv', version: '1.5.8' | |||||
implementation group: 'org.freemarker', name: 'freemarker', version: '2.3.32' | |||||
compileOnly group: 'jakarta.servlet', name: 'jakarta.servlet-api', version: '6.0.0' | |||||
implementation group: 'org.apache.poi', name: 'poi', version: '5.2.2' | |||||
implementation group: 'org.apache.poi', name: 'poi-ooxml', version: '5.2.2' | |||||
implementation group: 'org.docx4j', name: 'docx4j-core', version: '11.4.11' | |||||
implementation group: 'org.docx4j', name: 'docx4j-JAXB-ReferenceImpl', version: '11.4.11' | |||||
implementation group: 'com.google.code.gson', name: 'gson', version: '2.10.1' | |||||
implementation group: 'org.springdoc', name: 'springdoc-openapi-starter-webmvc-ui', version: '2.6.0' | |||||
implementation 'mysql:mysql-connector-java:8.0.33' | |||||
runtimeOnly 'com.mysql:mysql-connector-j' | |||||
testImplementation 'org.springframework.boot:spring-boot-starter-test' | |||||
testImplementation 'org.springframework.security:spring-security-test' | |||||
} | |||||
configurations { | |||||
all { | |||||
exclude group: 'org.springframework.boot', module: 'spring-boot-starter-logging' | |||||
} | |||||
} |
@@ -0,0 +1,6 @@ | |||||
distributionBase=GRADLE_USER_HOME | |||||
distributionPath=wrapper/dists | |||||
distributionUrl=https\://services.gradle.org/distributions/gradle-8.1.1-bin.zip | |||||
networkTimeout=10000 | |||||
zipStoreBase=GRADLE_USER_HOME | |||||
zipStorePath=wrapper/dists |
@@ -0,0 +1,240 @@ | |||||
#!/bin/sh | |||||
# | |||||
# Copyright © 2015-2021 the original authors. | |||||
# | |||||
# Licensed under the Apache License, Version 2.0 (the "License"); | |||||
# you may not use this file except in compliance with the License. | |||||
# You may obtain a copy of the License at | |||||
# | |||||
# https://www.apache.org/licenses/LICENSE-2.0 | |||||
# | |||||
# Unless required by applicable law or agreed to in writing, software | |||||
# distributed under the License is distributed on an "AS IS" BASIS, | |||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |||||
# See the License for the specific language governing permissions and | |||||
# limitations under the License. | |||||
# | |||||
############################################################################## | |||||
# | |||||
# Gradle start up script for POSIX generated by Gradle. | |||||
# | |||||
# Important for running: | |||||
# | |||||
# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is | |||||
# noncompliant, but you have some other compliant shell such as ksh or | |||||
# bash, then to run this script, type that shell name before the whole | |||||
# command line, like: | |||||
# | |||||
# ksh Gradle | |||||
# | |||||
# Busybox and similar reduced shells will NOT work, because this script | |||||
# requires all of these POSIX shell features: | |||||
# * functions; | |||||
# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», | |||||
# «${var#prefix}», «${var%suffix}», and «$( cmd )»; | |||||
# * compound commands having a testable exit status, especially «case»; | |||||
# * various built-in commands including «command», «set», and «ulimit». | |||||
# | |||||
# Important for patching: | |||||
# | |||||
# (2) This script targets any POSIX shell, so it avoids extensions provided | |||||
# by Bash, Ksh, etc; in particular arrays are avoided. | |||||
# | |||||
# The "traditional" practice of packing multiple parameters into a | |||||
# space-separated string is a well documented source of bugs and security | |||||
# problems, so this is (mostly) avoided, by progressively accumulating | |||||
# options in "$@", and eventually passing that to Java. | |||||
# | |||||
# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, | |||||
# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; | |||||
# see the in-line comments for details. | |||||
# | |||||
# There are tweaks for specific operating systems such as AIX, CygWin, | |||||
# Darwin, MinGW, and NonStop. | |||||
# | |||||
# (3) This script is generated from the Groovy template | |||||
# https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt | |||||
# within the Gradle project. | |||||
# | |||||
# You can find Gradle at https://github.com/gradle/gradle/. | |||||
# | |||||
############################################################################## | |||||
# Attempt to set APP_HOME | |||||
# Resolve links: $0 may be a link | |||||
app_path=$0 | |||||
# Need this for daisy-chained symlinks. | |||||
while | |||||
APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path | |||||
[ -h "$app_path" ] | |||||
do | |||||
ls=$( ls -ld "$app_path" ) | |||||
link=${ls#*' -> '} | |||||
case $link in #( | |||||
/*) app_path=$link ;; #( | |||||
*) app_path=$APP_HOME$link ;; | |||||
esac | |||||
done | |||||
APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit | |||||
APP_NAME="Gradle" | |||||
APP_BASE_NAME=${0##*/} | |||||
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. | |||||
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' | |||||
# Use the maximum available, or set MAX_FD != -1 to use that value. | |||||
MAX_FD=maximum | |||||
warn () { | |||||
echo "$*" | |||||
} >&2 | |||||
die () { | |||||
echo | |||||
echo "$*" | |||||
echo | |||||
exit 1 | |||||
} >&2 | |||||
# OS specific support (must be 'true' or 'false'). | |||||
cygwin=false | |||||
msys=false | |||||
darwin=false | |||||
nonstop=false | |||||
case "$( uname )" in #( | |||||
CYGWIN* ) cygwin=true ;; #( | |||||
Darwin* ) darwin=true ;; #( | |||||
MSYS* | MINGW* ) msys=true ;; #( | |||||
NONSTOP* ) nonstop=true ;; | |||||
esac | |||||
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar | |||||
# Determine the Java command to use to start the JVM. | |||||
if [ -n "$JAVA_HOME" ] ; then | |||||
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then | |||||
# IBM's JDK on AIX uses strange locations for the executables | |||||
JAVACMD=$JAVA_HOME/jre/sh/java | |||||
else | |||||
JAVACMD=$JAVA_HOME/bin/java | |||||
fi | |||||
if [ ! -x "$JAVACMD" ] ; then | |||||
die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME | |||||
Please set the JAVA_HOME variable in your environment to match the | |||||
location of your Java installation." | |||||
fi | |||||
else | |||||
JAVACMD=java | |||||
which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. | |||||
Please set the JAVA_HOME variable in your environment to match the | |||||
location of your Java installation." | |||||
fi | |||||
# Increase the maximum file descriptors if we can. | |||||
if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then | |||||
case $MAX_FD in #( | |||||
max*) | |||||
MAX_FD=$( ulimit -H -n ) || | |||||
warn "Could not query maximum file descriptor limit" | |||||
esac | |||||
case $MAX_FD in #( | |||||
'' | soft) :;; #( | |||||
*) | |||||
ulimit -n "$MAX_FD" || | |||||
warn "Could not set maximum file descriptor limit to $MAX_FD" | |||||
esac | |||||
fi | |||||
# Collect all arguments for the java command, stacking in reverse order: | |||||
# * args from the command line | |||||
# * the main class name | |||||
# * -classpath | |||||
# * -D...appname settings | |||||
# * --module-path (only if needed) | |||||
# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. | |||||
# For Cygwin or MSYS, switch paths to Windows format before running java | |||||
if "$cygwin" || "$msys" ; then | |||||
APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) | |||||
CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) | |||||
JAVACMD=$( cygpath --unix "$JAVACMD" ) | |||||
# Now convert the arguments - kludge to limit ourselves to /bin/sh | |||||
for arg do | |||||
if | |||||
case $arg in #( | |||||
-*) false ;; # don't mess with options #( | |||||
/?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath | |||||
[ -e "$t" ] ;; #( | |||||
*) false ;; | |||||
esac | |||||
then | |||||
arg=$( cygpath --path --ignore --mixed "$arg" ) | |||||
fi | |||||
# Roll the args list around exactly as many times as the number of | |||||
# args, so each arg winds up back in the position where it started, but | |||||
# possibly modified. | |||||
# | |||||
# NB: a `for` loop captures its iteration list before it begins, so | |||||
# changing the positional parameters here affects neither the number of | |||||
# iterations, nor the values presented in `arg`. | |||||
shift # remove old arg | |||||
set -- "$@" "$arg" # push replacement arg | |||||
done | |||||
fi | |||||
# Collect all arguments for the java command; | |||||
# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of | |||||
# shell script including quotes and variable substitutions, so put them in | |||||
# double quotes to make sure that they get re-expanded; and | |||||
# * put everything else in single quotes, so that it's not re-expanded. | |||||
set -- \ | |||||
"-Dorg.gradle.appname=$APP_BASE_NAME" \ | |||||
-classpath "$CLASSPATH" \ | |||||
org.gradle.wrapper.GradleWrapperMain \ | |||||
"$@" | |||||
# Stop when "xargs" is not available. | |||||
if ! command -v xargs >/dev/null 2>&1 | |||||
then | |||||
die "xargs is not available" | |||||
fi | |||||
# Use "xargs" to parse quoted args. | |||||
# | |||||
# With -n1 it outputs one arg per line, with the quotes and backslashes removed. | |||||
# | |||||
# In Bash we could simply go: | |||||
# | |||||
# readarray ARGS < <( xargs -n1 <<<"$var" ) && | |||||
# set -- "${ARGS[@]}" "$@" | |||||
# | |||||
# but POSIX shell has neither arrays nor command substitution, so instead we | |||||
# post-process each arg (as a line of input to sed) to backslash-escape any | |||||
# character that might be a shell metacharacter, then use eval to reverse | |||||
# that process (while maintaining the separation between arguments), and wrap | |||||
# the whole thing up as a single "set" statement. | |||||
# | |||||
# This will of course break if any of these variables contains a newline or | |||||
# an unmatched quote. | |||||
# | |||||
eval "set -- $( | |||||
printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | | |||||
xargs -n1 | | |||||
sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | | |||||
tr '\n' ' ' | |||||
)" '"$@"' | |||||
exec "$JAVACMD" "$@" |
@@ -0,0 +1,91 @@ | |||||
@rem | |||||
@rem Copyright 2015 the original author or authors. | |||||
@rem | |||||
@rem Licensed under the Apache License, Version 2.0 (the "License"); | |||||
@rem you may not use this file except in compliance with the License. | |||||
@rem You may obtain a copy of the License at | |||||
@rem | |||||
@rem https://www.apache.org/licenses/LICENSE-2.0 | |||||
@rem | |||||
@rem Unless required by applicable law or agreed to in writing, software | |||||
@rem distributed under the License is distributed on an "AS IS" BASIS, | |||||
@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |||||
@rem See the License for the specific language governing permissions and | |||||
@rem limitations under the License. | |||||
@rem | |||||
@if "%DEBUG%"=="" @echo off | |||||
@rem ########################################################################## | |||||
@rem | |||||
@rem Gradle startup script for Windows | |||||
@rem | |||||
@rem ########################################################################## | |||||
@rem Set local scope for the variables with windows NT shell | |||||
if "%OS%"=="Windows_NT" setlocal | |||||
set DIRNAME=%~dp0 | |||||
if "%DIRNAME%"=="" set DIRNAME=. | |||||
set APP_BASE_NAME=%~n0 | |||||
set APP_HOME=%DIRNAME% | |||||
@rem Resolve any "." and ".." in APP_HOME to make it shorter. | |||||
for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi | |||||
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. | |||||
set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" | |||||
@rem Find java.exe | |||||
if defined JAVA_HOME goto findJavaFromJavaHome | |||||
set JAVA_EXE=java.exe | |||||
%JAVA_EXE% -version >NUL 2>&1 | |||||
if %ERRORLEVEL% equ 0 goto execute | |||||
echo. | |||||
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. | |||||
echo. | |||||
echo Please set the JAVA_HOME variable in your environment to match the | |||||
echo location of your Java installation. | |||||
goto fail | |||||
:findJavaFromJavaHome | |||||
set JAVA_HOME=%JAVA_HOME:"=% | |||||
set JAVA_EXE=%JAVA_HOME%/bin/java.exe | |||||
if exist "%JAVA_EXE%" goto execute | |||||
echo. | |||||
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% | |||||
echo. | |||||
echo Please set the JAVA_HOME variable in your environment to match the | |||||
echo location of your Java installation. | |||||
goto fail | |||||
:execute | |||||
@rem Setup the command line | |||||
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar | |||||
@rem Execute Gradle | |||||
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* | |||||
:end | |||||
@rem End local scope for the variables with windows NT shell | |||||
if %ERRORLEVEL% equ 0 goto mainEnd | |||||
:fail | |||||
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of | |||||
rem the _cmd.exe /c_ return code! | |||||
set EXIT_CODE=%ERRORLEVEL% | |||||
if %EXIT_CODE% equ 0 set EXIT_CODE=1 | |||||
if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% | |||||
exit /b %EXIT_CODE% | |||||
:mainEnd | |||||
if "%OS%"=="Windows_NT" endlocal | |||||
:omega |
@@ -0,0 +1,6 @@ | |||||
{ | |||||
"name": "FHSMS-C-backend", | |||||
"lockfileVersion": 3, | |||||
"requires": true, | |||||
"packages": {} | |||||
} |