GeoLite2-Country === Sequence diagrams ```mermaid sequenceDiagram participant IpInfoService participant MaxMind participant S3 IpInfoService->>MaxMind: Download *.tar.gz MaxMind->>IpInfoService: *.tar.gz Note left of IpInfoService: Extract *.mmdb, apply new file to bean IpInfoService->>S3: Upload *.mmdb S3->>IpInfoService: Done ``` Flow chart - Build application with a database *.mmdb at the same folder with jar file. - When application start, It will use this file *.mmdb (may be out date). - Create a @Schedule Job run every (7 days) to get the new file from MaxMind server (It also run at start up and run every 7 days). - When download completed, extract to get a folder like **GeoLite2-Country_20220805** which contains **GeoLite2-Country.mmdb** inside - Load the new file to the bean of DataBaseReader to get IpInfo. - Upload file with it parent folder (**GeoLite2-Country_20220805**) to S3 to backup ```mermaid flowchart TD A[Start]-->B[Load Local *.mmdb] B-->C[Schedule get file *.tar.gz from MaxMind Server] C-->D[Extract *.mmdb] -->F[apply new *mmdb to Bean] --> G[End] D-->E[Upload to S3 repository to backup] -->G ```