# 2Fi LIONER Backend Setup

## 1. Create MySQL database
- Run the following command in MySQL
    ```
    CREATE SCHEMA `lionerdb` DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;
    ```

## 2. Edit the config to match with the environment
   - application-db-local.yml
      - Update the MySQL database location & login info:
      ```
      spring:
        datasource:
            jdbc-url: jdbc:mysql://127.0.0.1:3308/lionerdb?useUnicode=true&characterEncoding=UTF8&serverTimezone=GMT%2B8
            username: root
            password: secret
      ```

## 3. Configurations for VScode
- Build the **launch.json** & **settings.json** files, put them in **.vscode** folder and paste the following code:
    - **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": "Launch Local",
                    "request": "launch",
                    "mainClass": "com.ffii.lioner.LionerApplication",
                    "console": "internalConsole",
                    // "projectName": "LIONER",
                    "vmArgs": "-Xms2g -Xmx4g",
                    "args": "--spring.profiles.active=db-local,ldap-local,local"
                }
                ]
            }
        ```

- **settings.json**
    - Modify the java sdk directory if necessary
        ```
            {
                "java.configuration.updateBuildConfiguration": "interactive",
                "java.jdt.ls.java.home": "C:\\java\\jdk-17.0.8",
                "java.jdt.ls.vmargs": "-XX:+UseParallelGC -XX:GCTimeRatio=4 -XX:AdaptiveSizePolicyWeight=90 -Dsun.zip.disableMemoryMapping=true -Xmx4G -Xms100m -Xlog:disable"
            }
        ```

## 4. Run the application
- Run the application in VScode