" + app.getSummary() + "
"; 75 | } 76 | 77 | if(app.getDescription() != null && app.getDescription().length() > 0){ 78 | descriptionContents = descriptionContents + app.getDescription() + "
17 | * Check data size limits:
18 | * - description.length < App.APP_DESCRIPTION_LENGTH
19 | *
20 | * @return true if the component has the required info for its type and respects the size limits
21 | */
22 | public static AppdataValidationResult validateAppdataInformation(AppdataComponent component,
23 | String iconBaseRelativePath,
24 | short iconHeightDefault,
25 | short iconHeightHidpi) {
26 |
27 | AppdataValidationResult appdataValidationResult = new AppdataValidationResult();
28 |
29 | appdataValidationResult.setValid(true);
30 |
31 | if (component.getFlatpakId() == null || "".equalsIgnoreCase(component.getFlatpakId())) {
32 | appdataValidationResult.setValid(false);
33 | appdataValidationResult.getIssues().add("component.id is null or empty");
34 | }
35 |
36 | if (component.findDefaultName() == null || "".equalsIgnoreCase(component.findDefaultName())) {
37 | appdataValidationResult.setValid(false);
38 | appdataValidationResult.getIssues().add("component.name is null or empty");
39 | }
40 |
41 | if (component.findDefaultSummary() == null || "".equalsIgnoreCase(component.findDefaultSummary())) {
42 | appdataValidationResult.setValid(false);
43 | appdataValidationResult.getIssues().add("component.summary is null or empty");
44 | }
45 |
46 | if (APPSTREAM_TYPE_DESKTOP.equalsIgnoreCase(component.getType())) {
47 |
48 | if (component.findDefaultDescription() == null) {
49 | //Add as an issue but not critical (still valid)
50 | appdataValidationResult.getIssues().add("component.description is null or empty");
51 | } else {
52 | if (component.findDefaultDescription().length() > App.APP_DESCRIPTION_LENGTH) {
53 | appdataValidationResult.setValid(false);
54 | appdataValidationResult.getIssues().add("component.description is longuer than " + App.APP_DESCRIPTION_LENGTH);
55 | }
56 | }
57 |
58 |
59 | String hiDpiIconUrl = component.findIconUrl(iconBaseRelativePath, iconHeightHidpi);
60 | String defaultIconUrl = component.findIconUrl(iconBaseRelativePath, iconHeightDefault);
61 |
62 | if ("".equalsIgnoreCase(hiDpiIconUrl) && "".equalsIgnoreCase(defaultIconUrl)) {
63 | appdataValidationResult.setValid(false);
64 | appdataValidationResult.getIssues().add("component.icon is null");
65 | }
66 |
67 | }
68 |
69 | return appdataValidationResult;
70 | }
71 |
72 | }
73 |
--------------------------------------------------------------------------------
/src/main/java/org/flathub/api/util/FlatpakRefFileCreator.java:
--------------------------------------------------------------------------------
1 | package org.flathub.api.util;
2 |
3 | import java.io.BufferedWriter;
4 | import java.io.IOException;
5 | import java.nio.charset.StandardCharsets;
6 | import java.nio.file.Files;
7 | import java.nio.file.Paths;
8 | import org.flathub.api.model.App;
9 |
10 | /**
11 | * Created by jorge on 04/05/17.
12 | */
13 | public class FlatpakRefFileCreator {
14 |
15 |
16 | public static void createFlatpakRefFile(String path, App app) throws IOException {
17 |
18 | //Use try-with-resource to get auto-closeable writer instance
19 | try (BufferedWriter writer = Files.newBufferedWriter(Paths.get(path), StandardCharsets.UTF_8)) {
20 | writer.write("[Flatpak Ref]" + "\n");
21 | writer.write("Name=" + app.getFlatpakAppId() + "\n");
22 | writer.write("Branch=" + app.getFlatpakRepo().getDefaultBranch() + "\n");
23 | writer.write("Title=" + app.getName() + " from " + app.getFlatpakRepo().getName() + "\n");
24 | writer.write("Url=" + app.getFlatpakRepo().getUrl() + "\n");
25 | writer.write("SuggestRemoteName=" + app.getFlatpakRepo().getName() + "\n");
26 | writer.write("RuntimeRepo=" + app.getFlatpakRepo().getDownloadFlatpakRepoUrl() + "\n");
27 | writer.write("IsRuntime=false" + "\n");
28 | writer.write("GPGKey=" + app.getFlatpakRepo().getGpgkey() + "\n");
29 | //writer.write("Homepage=" + app.getHomepageUrl() + "\n");
30 | //writer.write("Comment=" + app.getSummary() + "\n");
31 | //writer.write("Icon=" + app.getIcon());
32 | }
33 |
34 |
35 | }
36 |
37 | }
38 |
--------------------------------------------------------------------------------
/src/main/resources/application-DEV.yml:
--------------------------------------------------------------------------------
1 |
2 | spring:
3 | datasource:
4 | url: jdbc:postgresql://localhost:5432/linuxstore
5 | username: linuxstore
6 | # Passwords are stored in a external configuration file
7 | # More information at README.md
8 | driver-class-name: org.postgresql.Driver
9 | jpa:
10 | ## This is important
11 | # Hibernate ddl auto (create, create-drop, validate, update)
12 | hibernate.ddl-auto: validate
13 | show-sql: false
14 | # mail:
15 | # host: smtp.gmail.com
16 | # port: 587
17 | # username:
18 | # password:
19 | # smtp.auth: true
20 | # smtp.starttls.enable: true
21 |
22 |
23 | hibernate:
24 | showSql: true
25 | dialect: org.hibernate.dialect.PostgreSQL94Dialect
26 |
27 | flathub:
28 | appstream-extractor-info: /var/lib/appstream-extractor/flathub-x86_64.info
29 | appstream-extractor-info-legacy: /var/lib/appstream-extractor/appstream-extractor.info
30 | update-service:
31 | icons:
32 | import-icons: true
33 | dest-path: /opt/linux-store/www/repo/appstream/x86_64/icons/
34 | desktop-import-path: /opt/linux-store/www/repo/appstream/x86_64/icons/128x128/
35 | mobile-import-path: /opt/linux-store/www/repo/appstream/x86_64/icons/64x64/
36 | flatpakref:
37 | generate-flatpakref: true
38 | dest-path: /opt/linux-store/www/repo/appstream/
39 |
40 | flatpak:
41 | flatpak-command: flatpak-spawn --host /usr/bin/flatpak
42 | #flatpak-command: /home/jorge/local/bin/flatpak
--------------------------------------------------------------------------------
/src/main/resources/application-LOCAL.yml:
--------------------------------------------------------------------------------
1 |
2 | spring:
3 | datasource:
4 | url: jdbc:postgresql://postgresdb:5432/linuxstore
5 | username: linuxstore
6 | # Passwords are stored in a external configuration file
7 | # More information at README.md
8 | driver-class-name: org.postgresql.Driver
9 | jpa:
10 | ## This is important
11 | # Hibernate ddl auto (create, create-drop, validate, update)
12 | hibernate.ddl-auto: validate
13 | show-sql: true
14 | # mail:
15 | # host: smtp.gmail.com
16 | # port: 587
17 | # username:
18 | # password:
19 | # smtp.auth: true
20 | # smtp.starttls.enable: true
21 |
22 |
23 | hibernate:
24 | showSql: true
25 | dialect: org.hibernate.dialect.PostgreSQL94Dialect
26 |
27 | flathub:
28 | appstream-extractor-info: /var/lib/appstream-extractor/flathub-x86_64.info
29 | appstream-extractor-info-legacy: /var/lib/appstream-extractor/appstream-extractor.info
30 | update-service:
31 | icons:
32 | import-icons: true
33 | dest-path: /opt/linux-store/www/repo/appstream/x86_64/icons/
34 | desktop-import-path: /opt/linux-store/www/repo/appstream/x86_64/icons/128x128/
35 | mobile-import-path: /opt/linux-store/www/repo/appstream/x86_64/icons/64x64/
36 | flatpakref:
37 | generate-flatpakref: true
38 | dest-path: /opt/linux-store/www/repo/appstream/
39 |
40 | flatpak:
41 | flatpak-command: /usr/bin/flatpak
--------------------------------------------------------------------------------
/src/main/resources/application-PRO.yml:
--------------------------------------------------------------------------------
1 |
2 | spring:
3 | datasource:
4 | url: jdbc:postgresql://localhost:5432/linuxstore
5 | username: linuxstore
6 | # Passwords are stored in a external configuration file
7 | # More information at README.md
8 | driver-class-name: org.postgresql.Driver
9 | jpa:
10 | ## This is important
11 | # Hibernate ddl auto (create, create-drop, validate, update)
12 | hibernate.ddl-auto: validate
13 | show-sql: false
14 | # mail:
15 | # host: smtp.gmail.com
16 | # port: 587
17 | # username:
18 | # password:
19 | # smtp.auth: true
20 | # smtp.starttls.enable: true
21 |
22 |
23 | hibernate:
24 | showSql: true
25 | dialect: org.hibernate.dialect.PostgreSQL94Dialect
26 |
27 | flathub:
28 | appstream-extractor-info: /var/lib/appstream-extractor/flathub-x86_64.info
29 | appstream-extractor-info-legacy: /var/lib/appstream-extractor/appstream-extractor.info
30 | update-service:
31 | icons:
32 | import-icons: false
33 | dest-path: /opt/linux-store/www/repo/appstream/x86_64/icons/
34 | desktop-import-path: /opt/linux-store/www/repo/appstream/x86_64/icons/128x128/
35 | mobile-import-path: /opt/linux-store/www/repo/appstream/x86_64/icons/64x64/
36 | flatpakref:
37 | generate-flatpakref: false
38 | dest-path: /opt/linux-store/www/repo/appstream/
39 |
40 | flatpak:
41 | flatpak-command: /usr/bin/flatpak
--------------------------------------------------------------------------------
/src/main/resources/application-STAGING.yml:
--------------------------------------------------------------------------------
1 |
2 | spring:
3 | datasource:
4 | url: jdbc:postgresql://postgresdb:5432/linuxstore
5 | username: linuxstore
6 | # Passwords are stored in a external configuration file
7 | # More information at README.md
8 | driver-class-name: org.postgresql.Driver
9 | jpa:
10 | ## This is important
11 | # Hibernate ddl auto (create, create-drop, validate, update)
12 | hibernate.ddl-auto: validate
13 | show-sql: false
14 | # mail:
15 | # host: smtp.gmail.com
16 | # port: 587
17 | # username:
18 | # password:
19 | # smtp.auth: true
20 | # smtp.starttls.enable: true
21 |
22 |
23 | hibernate:
24 | showSql: true
25 | dialect: org.hibernate.dialect.PostgreSQL94Dialect
26 |
27 | flathub:
28 | appstream-extractor-info: /var/lib/appstream-extractor/flathub-x86_64.info
29 | appstream-extractor-info-legacy: /var/lib/appstream-extractor/appstream-extractor.info
30 | update-service:
31 | icons:
32 | import-icons: true
33 | dest-path: /opt/linux-store/www/repo/appstream/x86_64/icons/
34 | desktop-import-path: /opt/linux-store/www/repo/appstream/x86_64/icons/128x128/
35 | mobile-import-path: /opt/linux-store/www/repo/appstream/x86_64/icons/64x64/
36 | flatpakref:
37 | generate-flatpakref: true
38 | dest-path: /opt/linux-store/www/repo/appstream/
39 |
40 | flatpak:
41 | flatpak-command: /usr/bin/flatpak
--------------------------------------------------------------------------------
/src/main/resources/application-TEST.yml:
--------------------------------------------------------------------------------
1 |
2 | spring:
3 | datasource:
4 | url: jdbc:hsqldb:mem:flathub
5 | username: sa
6 | driver-class-name: org.hsqldb.jdbcDriver
7 | #data: classpath*:data.sql
8 | jpa:
9 | database: HSQL
10 | # Create BD tables automatically
11 | hibernate:
12 | ddl-auto: create
13 | show-sql: true
14 | # mail:
15 | # host: smtp.gmail.com
16 | # port: 587
17 | # username:
18 | # password:
19 | # smtp.auth: true
20 | # smtp.starttls.enable: true
21 |
22 |
23 | hibernate:
24 | showSql: true
25 | dialect: org.hibernate.dialect.org.hibernate.dialect.HSQLDialect
26 |
27 | flathub:
28 | appstream-extractor-info: /var/lib/appstream-extractor/flathub-x86_64.info
29 | appstream-extractor-info-legacy: /var/lib/appstream-extractor/appstream-extractor.info
30 | # flatpakref:
31 | # server-path: /var/www/main-store/apps/
32 | # url: http://localhost:80/main-store/apps/
33 | # icons:
34 | # server-path: /var/www/main-store/icons/
35 | # url: http://localhost:80/main-store/icons/
36 |
37 | flatpak:
38 | flatpak-command: flatpak-spawn --host /usr/bin/flatpak
39 |
--------------------------------------------------------------------------------
/src/main/resources/application.properties:
--------------------------------------------------------------------------------
1 | # Set default profile
2 | spring.profiles.active=DEV
3 | # Set default error page
4 | server.error.whitelabel.enabled=true
5 | # Add flathubapi tot the url
6 | # localhost:8080/flathubapi
7 | # server.context-path:/flathubapi
8 | # Make Jackson serialize dates in ISO format (2016-04-29T11:46:59.670+0000)
9 | # instead of timestamp (1461930419670)
10 | spring.jackson.serialization.write_dates_as_timestamps=false
11 | #####################################################################
12 | # Logs configuration:
13 | # +info a http://blog.netgloo.com/2014/12/11/logging-in-spring-boot/
14 | #
15 | # Level for loggers on classes inside the root package "flathub"
16 | # (and its sub-packages)
17 | # Available levels are: TRACE, DEBUG, INFO, WARN, ERROR, FATAL, OFF
18 | logging.level.org.flathub=INFO
19 | # Specify the level for spring boot and hibernate's loggers
20 | logging.level.org.springframework.boot.autoconfigure.security=INFO
21 | logging.level.org.springframework.web=INFO
22 | logging.level.org.hibernate=ERROR
23 | # Log file location (in addition to the console)
24 | logging.file=linux-store-backend.log
25 |
26 |
27 | flyway.baseline-version=1.0
28 | flyway.baseline-on-migrate=yes
29 |
--------------------------------------------------------------------------------
/src/main/resources/db/migration/V1/R__app_update_in_store_since_date.sql:
--------------------------------------------------------------------------------
1 | UPDATE public.app SET in_store_since_date = '2017-11-07T15:41:04Z' WHERE flatpak_app_id = 'org.gnome.Rhythmbox3';
2 | UPDATE public.app SET in_store_since_date = '2017-06-27T20:06:14Z' WHERE flatpak_app_id = 'org.geogebra.GeoGebra';
3 | UPDATE public.app SET in_store_since_date = '2018-03-15T11:04:16Z' WHERE flatpak_app_id = 'org.flarerpg.Flare';
4 | UPDATE public.app SET in_store_since_date = '2017-04-13T11:48:34Z' WHERE flatpak_app_id = 'org.supertuxproject.SuperTux';
5 | UPDATE public.app SET in_store_since_date = '2017-05-03T14:02:17Z' WHERE flatpak_app_id = 'org.darktable.Darktable';
6 | UPDATE public.app SET in_store_since_date = '2018-03-16T04:59:36Z' WHERE flatpak_app_id = 'org.flightgear.FlightGear';
7 | UPDATE public.app SET in_store_since_date = '2017-06-23T13:58:51Z' WHERE flatpak_app_id = 'org.libretro.RetroArch';
8 | UPDATE public.app SET in_store_since_date = '2017-10-17T07:29:12Z' WHERE flatpak_app_id = 'net.sourceforge.Klavaro';
9 | UPDATE public.app SET in_store_since_date = '2017-11-02T16:57:16Z' WHERE flatpak_app_id = 'com.frac_tion.teleport';
10 | UPDATE public.app SET in_store_since_date = '2018-03-09T18:04:51Z' WHERE flatpak_app_id = 'net.ankiweb.Anki';
11 | UPDATE public.app SET in_store_since_date = '2017-11-28T16:24:26Z' WHERE flatpak_app_id = 'com.github.geigi.cozy';
12 | UPDATE public.app SET in_store_since_date = '2017-09-19T08:23:59Z' WHERE flatpak_app_id = 'org.godotengine.Godot';
13 | UPDATE public.app SET in_store_since_date = '2017-05-16T23:03:40Z' WHERE flatpak_app_id = 'net.sourceforge.Ri-li';
14 | UPDATE public.app SET in_store_since_date = '2018-01-11T18:22:29Z' WHERE flatpak_app_id = 'org.ethereum.Mist';
15 | UPDATE public.app SET in_store_since_date = '2017-10-17T07:14:16Z' WHERE flatpak_app_id = 'io.github.Freedoom-Phase-1';
16 | UPDATE public.app SET in_store_since_date = '2017-10-03T08:54:29Z' WHERE flatpak_app_id = 'org.gnome.Geary';
17 | UPDATE public.app SET in_store_since_date = '2017-12-17T19:52:11Z' WHERE flatpak_app_id = 'org.gnome.tetravex';
18 | UPDATE public.app SET in_store_since_date = '2017-12-01T10:11:21Z' WHERE flatpak_app_id = 'net.openra.OpenRA';
19 | UPDATE public.app SET in_store_since_date = '2017-12-21T10:11:25Z' WHERE flatpak_app_id = 'com.github.z.Cumulonimbus';
20 | UPDATE public.app SET in_store_since_date = '2018-03-16T05:00:33Z' WHERE flatpak_app_id = 'org.qbittorrent.qBittorrent';
21 | UPDATE public.app SET in_store_since_date = '2018-01-08T03:16:19Z' WHERE flatpak_app_id = 'io.ark.Desktop';
22 | UPDATE public.app SET in_store_since_date = '2017-11-07T21:34:07Z' WHERE flatpak_app_id = 'org.openmw.OpenMW';
23 | UPDATE public.app SET in_store_since_date = '2017-11-10T10:22:10Z' WHERE flatpak_app_id = 'org.gnome.Devhelp';
24 | UPDATE public.app SET in_store_since_date = '2017-05-31T16:46:58Z' WHERE flatpak_app_id = 'org.gnome.Polari';
25 | UPDATE public.app SET in_store_since_date = '2017-04-12T20:33:23Z' WHERE flatpak_app_id = 'org.blender.Blender';
26 | UPDATE public.app SET in_store_since_date = '2017-05-26T07:39:19Z' WHERE flatpak_app_id = 'com.tux4kids.tuxmath';
27 | UPDATE public.app SET in_store_since_date = '2018-03-06T09:11:28Z' WHERE flatpak_app_id = 'com.github.hluk.copyq';
28 | UPDATE public.app SET in_store_since_date = '2017-11-08T20:24:31Z' WHERE flatpak_app_id = 'com.googleplaymusicdesktopplayer.GPMDP';
29 | UPDATE public.app SET in_store_since_date = '2017-04-26T06:13:55Z' WHERE flatpak_app_id = 'org.seul.pingus';
30 | UPDATE public.app SET in_store_since_date = '2017-10-13T11:46:12Z' WHERE flatpak_app_id = 'org.gnome.Builder';
31 | UPDATE public.app SET in_store_since_date = '2017-07-29T17:05:55Z' WHERE flatpak_app_id = 'org.gnome.eog';
32 | UPDATE public.app SET in_store_since_date = '2017-11-07T15:08:02Z' WHERE flatpak_app_id = 'org.gnome.Characters';
33 | UPDATE public.app SET in_store_since_date = '2017-05-26T07:22:14Z' WHERE flatpak_app_id = 'com.tux4kids.tuxtype';
34 | UPDATE public.app SET in_store_since_date = '2017-04-11T06:57:06Z' WHERE flatpak_app_id = 'org.gnome.Recipes';
35 | UPDATE public.app SET in_store_since_date = '2018-01-31T10:53:55Z' WHERE flatpak_app_id = 'org.vim.Vim';
36 | UPDATE public.app SET in_store_since_date = '2018-01-08T15:55:23Z' WHERE flatpak_app_id = 'org.kde.krita';
37 | UPDATE public.app SET in_store_since_date = '2018-01-31T11:00:28Z' WHERE flatpak_app_id = 'io.github.mki1967.mki3dgame';
38 | UPDATE public.app SET in_store_since_date = '2018-01-31T11:01:37Z' WHERE flatpak_app_id = 'net.bartkessels.getit';
39 | UPDATE public.app SET in_store_since_date = '2017-10-13T16:46:23Z' WHERE flatpak_app_id = 'org.gimp.GIMP';
40 | UPDATE public.app SET in_store_since_date = '2017-07-22T00:10:00Z' WHERE flatpak_app_id = 'com.github.philip_scott.notes-up';
41 | UPDATE public.app SET in_store_since_date = '2017-12-06T14:35:29Z' WHERE flatpak_app_id = 'org.kicad_pcb.KiCad';
42 | UPDATE public.app SET in_store_since_date = '2017-12-12T22:31:37Z' WHERE flatpak_app_id = 'org.gnome.quadrapassel';
43 | UPDATE public.app SET in_store_since_date = '2017-05-16T23:36:35Z' WHERE flatpak_app_id = 'org.armagetronad.ArmagetronAdvanced';
44 | UPDATE public.app SET in_store_since_date = '2017-08-17T17:34:15Z' WHERE flatpak_app_id = 'org.filezillaproject.Filezilla';
45 | UPDATE public.app SET in_store_since_date = '2017-11-07T15:13:14Z' WHERE flatpak_app_id = 'org.gnome.Dictionary';
46 | UPDATE public.app SET in_store_since_date = '2017-10-05T14:51:18Z' WHERE flatpak_app_id = 'org.pitivi.Pitivi';
47 | UPDATE public.app SET in_store_since_date = '2017-09-24T12:21:45Z' WHERE flatpak_app_id = 'org.sparkleshare.SparkleShare';
48 | UPDATE public.app SET in_store_since_date = '2017-12-17T19:51:08Z' WHERE flatpak_app_id = 'org.gnome.Genius';
49 | UPDATE public.app SET in_store_since_date = '2017-11-12T20:42:12Z' WHERE flatpak_app_id = 'im.riot.Riot';
50 | UPDATE public.app SET in_store_since_date = '2017-04-19T17:17:55Z' WHERE flatpak_app_id = 'nl.openoffice.bluefish';
51 | UPDATE public.app SET in_store_since_date = '2017-05-03T19:08:18Z' WHERE flatpak_app_id = 'org.gnome.Nautilus';
52 | UPDATE public.app SET in_store_since_date = '2017-12-04T16:19:16Z' WHERE flatpak_app_id = 'net.mediaarea.BWFMetaEdit';
53 | UPDATE public.app SET in_store_since_date = '2017-11-09T16:10:39Z' WHERE flatpak_app_id = 'org.gnome.Totem';
54 | UPDATE public.app SET in_store_since_date = '2017-04-15T18:26:57Z' WHERE flatpak_app_id = 'org.tuxpaint.Tuxpaint';
55 | UPDATE public.app SET in_store_since_date = '2017-05-12T05:30:25Z' WHERE flatpak_app_id = 'org.gnome.Lollypop';
56 | UPDATE public.app SET in_store_since_date = '2017-08-10T06:22:51Z' WHERE flatpak_app_id = 'com.transmissionbt.Transmission';
57 | UPDATE public.app SET in_store_since_date = '2017-09-06T10:58:33Z' WHERE flatpak_app_id = 'io.github.EndlessSky.endless-sky';
58 | UPDATE public.app SET in_store_since_date = '2017-06-02T06:36:09Z' WHERE flatpak_app_id = 'org.gna.Warmux';
59 | UPDATE public.app SET in_store_since_date = '2017-10-17T07:24:53Z' WHERE flatpak_app_id = 'org.gnome.clocks';
60 | UPDATE public.app SET in_store_since_date = '2017-10-13T17:43:52Z' WHERE flatpak_app_id = 'de.manuel_kehl.go-for-it';
61 | UPDATE public.app SET in_store_since_date = '2017-08-04T18:19:06Z' WHERE flatpak_app_id = 'ca.desrt.dconf-editor';
62 | UPDATE public.app SET in_store_since_date = '2017-10-03T22:20:48Z' WHERE flatpak_app_id = 'org.telegram.desktop';
63 | UPDATE public.app SET in_store_since_date = '2017-04-11T16:13:22Z' WHERE flatpak_app_id = 'io.github.Pithos';
64 | UPDATE public.app SET in_store_since_date = '2017-06-01T10:19:15Z' WHERE flatpak_app_id = 'io.gitlab.osslugaru.Lugaru';
65 | UPDATE public.app SET in_store_since_date = '2017-04-12T20:34:51Z' WHERE flatpak_app_id = 'org.musicbrainz.Picard';
66 | UPDATE public.app SET in_store_since_date = '2017-05-12T05:25:06Z' WHERE flatpak_app_id = 'net.sourceforge.torcs';
67 | UPDATE public.app SET in_store_since_date = '2017-11-10T10:28:11Z' WHERE flatpak_app_id = 'org.gnome.Epiphany';
68 | UPDATE public.app SET in_store_since_date = '2017-12-05T12:26:11Z' WHERE flatpak_app_id = 'com.dosbox.DOSBox';
69 | UPDATE public.app SET in_store_since_date = '2017-06-17T23:41:23Z' WHERE flatpak_app_id = 'com.valvesoftware.Steam';
70 | UPDATE public.app SET in_store_since_date = '2017-06-28T08:25:28Z' WHERE flatpak_app_id = 'com.albiononline.AlbionOnline';
71 | UPDATE public.app SET in_store_since_date = '2017-07-31T15:25:09Z' WHERE flatpak_app_id = 'org.gnome.gedit';
72 | UPDATE public.app SET in_store_since_date = '2017-12-11T10:02:15Z' WHERE flatpak_app_id = 'cx.ring.Ring';
73 | UPDATE public.app SET in_store_since_date = '2017-05-29T13:15:08Z' WHERE flatpak_app_id = 'org.gnome.Eolie';
74 | UPDATE public.app SET in_store_since_date = '2017-04-14T20:46:25Z' WHERE flatpak_app_id = 'net.sourceforge.chromium-bsu';
75 | UPDATE public.app SET in_store_since_date = '2017-10-18T10:34:22Z' WHERE flatpak_app_id = 'org.octave.Octave';
76 | UPDATE public.app SET in_store_since_date = '2017-04-26T06:08:18Z' WHERE flatpak_app_id = 'org.frozen_bubble.frozen-bubble';
77 | UPDATE public.app SET in_store_since_date = '2017-05-12T05:21:12Z' WHERE flatpak_app_id = 'net.sourceforge.btanks';
78 | UPDATE public.app SET in_store_since_date = '2017-04-26T06:25:35Z' WHERE flatpak_app_id = 'org.debian.TuxPuck';
79 | UPDATE public.app SET in_store_since_date = '2017-11-10T10:08:25Z' WHERE flatpak_app_id = 'org.gnome.Weather';
80 | UPDATE public.app SET in_store_since_date = '2017-10-17T07:27:15Z' WHERE flatpak_app_id = 'fr.free.Homebank';
81 | UPDATE public.app SET in_store_since_date = '2017-06-27T20:08:53Z' WHERE flatpak_app_id = 'org.gnome.frogr';
82 | UPDATE public.app SET in_store_since_date = '2018-03-08T11:20:45Z' WHERE flatpak_app_id = 'net.fsuae.FS-UAE';
83 | UPDATE public.app SET in_store_since_date = '2017-05-08T14:09:41Z' WHERE flatpak_app_id = 'io.mgba.mGBA';
84 | UPDATE public.app SET in_store_since_date = '2017-05-08T18:17:28Z' WHERE flatpak_app_id = 'org.audacityteam.Audacity';
85 | UPDATE public.app SET in_store_since_date = '2017-12-06T18:50:25Z' WHERE flatpak_app_id = 'io.lbry.lbry-app';
86 | UPDATE public.app SET in_store_since_date = '2018-02-05T11:29:05Z' WHERE flatpak_app_id = 'com.github.cassidyjames.dippi';
87 | UPDATE public.app SET in_store_since_date = '2017-04-11T14:07:36Z' WHERE flatpak_app_id = 'com.vinszent.GnomeTwitch';
88 | UPDATE public.app SET in_store_since_date = '2017-11-09T13:13:44Z' WHERE flatpak_app_id = 'org.gnome.Books';
89 | UPDATE public.app SET in_store_since_date = '2017-12-13T11:07:34Z' WHERE flatpak_app_id = 'org.gnome.Aisleriot';
90 | UPDATE public.app SET in_store_since_date = '2017-05-15T17:04:49Z' WHERE flatpak_app_id = 'org.wesnoth.Wesnoth';
91 | UPDATE public.app SET in_store_since_date = '2017-04-14T21:05:30Z' WHERE flatpak_app_id = 'net.sourceforge.mars-game';
92 | UPDATE public.app SET in_store_since_date = '2017-12-18T09:03:46Z' WHERE flatpak_app_id = 'io.github.betaflight.BetaflightConfigurator';
93 | UPDATE public.app SET in_store_since_date = '2018-01-25T22:49:11Z' WHERE flatpak_app_id = 'com.github.fabiocolacio.marker';
94 | UPDATE public.app SET in_store_since_date = '2017-09-14T15:23:49Z' WHERE flatpak_app_id = 'com.snes9x.Snes9x';
95 | UPDATE public.app SET in_store_since_date = '2017-09-19T21:41:52Z' WHERE flatpak_app_id = 'org.gottcode.FocusWriter';
96 | UPDATE public.app SET in_store_since_date = '2017-05-12T05:27:34Z' WHERE flatpak_app_id = 'net.sourceforge.atanks';
97 | UPDATE public.app SET in_store_since_date = '2017-10-04T19:29:44Z' WHERE flatpak_app_id = 'org.gnome.Hitori';
98 | UPDATE public.app SET in_store_since_date = '2018-03-12T19:33:31Z' WHERE flatpak_app_id = 'org.jamovi.jamovi';
99 | UPDATE public.app SET in_store_since_date = '2017-11-09T13:50:29Z' WHERE flatpak_app_id = 'org.gnome.Documents';
100 | UPDATE public.app SET in_store_since_date = '2017-11-07T15:22:03Z' WHERE flatpak_app_id = 'org.gnome.Maps';
101 | UPDATE public.app SET in_store_since_date = '2018-02-26T07:43:40Z' WHERE flatpak_app_id = 'net.sf.VICE';
102 | UPDATE public.app SET in_store_since_date = '2017-09-08T21:52:05Z' WHERE flatpak_app_id = 'org.videolan.VLC';
103 | UPDATE public.app SET in_store_since_date = '2017-10-25T19:39:29Z' WHERE flatpak_app_id = 'org.tordini.flavio.Minitube';
104 | UPDATE public.app SET in_store_since_date = '2017-11-09T17:00:06Z' WHERE flatpak_app_id = 'org.quassel_irc.QuasselClient';
105 | UPDATE public.app SET in_store_since_date = '2017-04-27T15:22:59Z' WHERE flatpak_app_id = 'org.inkscape.Inkscape';
106 | UPDATE public.app SET in_store_since_date = '2017-09-26T07:36:40Z' WHERE flatpak_app_id = 'com.skype.Client';
107 | UPDATE public.app SET in_store_since_date = '2017-10-25T21:27:46Z' WHERE flatpak_app_id = 'com.github.rssguard';
108 | UPDATE public.app SET in_store_since_date = '2018-03-06T09:09:36Z' WHERE flatpak_app_id = 'com.bladecoder.adventure-editor';
109 | UPDATE public.app SET in_store_since_date = '2017-10-29T18:17:40Z' WHERE flatpak_app_id = 'org.musescore.MuseScore';
110 | UPDATE public.app SET in_store_since_date = '2017-04-11T12:10:08Z' WHERE flatpak_app_id = 'com.uploadedlobster.peek';
111 | UPDATE public.app SET in_store_since_date = '2018-01-18T13:45:28Z' WHERE flatpak_app_id = 'com.github.robertsanseries.ciano';
112 | UPDATE public.app SET in_store_since_date = '2018-03-05T16:46:32Z' WHERE flatpak_app_id = 'com.github.gyunaev.spivak';
113 | UPDATE public.app SET in_store_since_date = '2018-01-25T15:54:13Z' WHERE flatpak_app_id = 'io.github.jliljebl.Flowblade';
114 | UPDATE public.app SET in_store_since_date = '2018-01-15T20:00:21Z' WHERE flatpak_app_id = 'org.gnome.meld';
115 | UPDATE public.app SET in_store_since_date = '2018-03-06T08:54:46Z' WHERE flatpak_app_id = 'im.srain.Srain';
116 | UPDATE public.app SET in_store_since_date = '2018-02-24T13:42:42Z' WHERE flatpak_app_id = 'org.gabmus.hydrapaper';
117 | UPDATE public.app SET in_store_since_date = '2017-11-03T19:26:43Z' WHERE flatpak_app_id = 'com.github.babluboy.bookworm';
118 | UPDATE public.app SET in_store_since_date = '2017-11-20T16:13:43Z' WHERE flatpak_app_id = 'com.remarkable.reMarkable';
119 | UPDATE public.app SET in_store_since_date = '2018-03-08T11:18:12Z' WHERE flatpak_app_id = 'org.photoqt.PhotoQt';
120 | UPDATE public.app SET in_store_since_date = '2018-01-12T12:58:53Z' WHERE flatpak_app_id = 'com.google.AndroidStudio';
121 | UPDATE public.app SET in_store_since_date = '2017-11-09T03:41:23Z' WHERE flatpak_app_id = 'io.atom.Atom';
122 | UPDATE public.app SET in_store_since_date = '2017-04-18T03:37:26Z' WHERE flatpak_app_id = 'com.teeworlds.Teeworlds';
123 | UPDATE public.app SET in_store_since_date = '2018-01-11T14:49:53Z' WHERE flatpak_app_id = 'net.mediaarea.AVIMetaEdit';
124 | UPDATE public.app SET in_store_since_date = '2017-08-24T10:41:22Z' WHERE flatpak_app_id = 'com.slack.Slack';
125 | UPDATE public.app SET in_store_since_date = '2018-01-05T02:42:30Z' WHERE flatpak_app_id = 'io.exodus.Exodus';
126 | UPDATE public.app SET in_store_since_date = '2017-04-11T16:14:58Z' WHERE flatpak_app_id = 'io.github.GnomeMpv';
127 | UPDATE public.app SET in_store_since_date = '2018-03-06T09:04:20Z' WHERE flatpak_app_id = 'net.sf.nootka';
128 | UPDATE public.app SET in_store_since_date = '2017-04-11T16:42:37Z' WHERE flatpak_app_id = 'org.DolphinEmu.dolphin-emu';
129 | UPDATE public.app SET in_store_since_date = '2017-11-21T01:42:09Z' WHERE flatpak_app_id = 'com.visualstudio.code';
130 | UPDATE public.app SET in_store_since_date = '2018-01-24T11:49:36Z' WHERE flatpak_app_id = 'us.zoom.Zoom';
131 | UPDATE public.app SET in_store_since_date = '2017-09-19T17:27:10Z' WHERE flatpak_app_id = 'com.github.gkarsay.parlatype';
132 | UPDATE public.app SET in_store_since_date = '2017-04-29T18:40:52Z' WHERE flatpak_app_id = 'com.github.needleandthread.vocal';
133 | UPDATE public.app SET in_store_since_date = '2017-09-16T18:45:13Z' WHERE flatpak_app_id = 'de.haeckerfelix.gradio';
134 | UPDATE public.app SET in_store_since_date = '2018-01-11T14:48:46Z' WHERE flatpak_app_id = 'net.mediaarea.DVAnalyzer';
135 | UPDATE public.app SET in_store_since_date = '2018-02-22T11:58:57Z' WHERE flatpak_app_id = 'com.github.donadigo.appeditor';
136 | UPDATE public.app SET in_store_since_date = '2017-12-04T20:28:28Z' WHERE flatpak_app_id = 'com.jetbrains.PyCharm-Community';
137 | UPDATE public.app SET in_store_since_date = '2018-01-25T22:51:07Z' WHERE flatpak_app_id = 'net.mediaarea.MediaConch';
138 | UPDATE public.app SET in_store_since_date = '2018-03-06T10:28:01Z' WHERE flatpak_app_id = 'com.endlessm.HatchPreviewer';
139 | UPDATE public.app SET in_store_since_date = '2018-01-25T16:03:41Z' WHERE flatpak_app_id = 'net.mediaarea.MOVMetaEdit';
140 | UPDATE public.app SET in_store_since_date = '2018-01-25T16:04:55Z' WHERE flatpak_app_id = 'net.mediaarea.QCTools';
141 | UPDATE public.app SET in_store_since_date = '2017-04-11T16:13:44Z' WHERE flatpak_app_id = 'io.github.Hexchat';
142 | UPDATE public.app SET in_store_since_date = '2017-06-18T08:42:20Z' WHERE flatpak_app_id = 'com.spotify.Client';
143 | UPDATE public.app SET in_store_since_date = '2017-12-23T22:16:23Z' WHERE flatpak_app_id = 'com.github.paolostivanin.OTPClient';
144 | UPDATE public.app SET in_store_since_date = '2017-12-18T14:56:04Z' WHERE flatpak_app_id = 'org.keepassxc.KeePassXC';
145 | UPDATE public.app SET in_store_since_date = '2017-08-01T09:36:24Z' WHERE flatpak_app_id = 'org.gnome.iagno';
146 | UPDATE public.app SET in_store_since_date = '2017-04-11T16:40:43Z' WHERE flatpak_app_id = 'org.ppsspp.PPSSPP';
147 | UPDATE public.app SET in_store_since_date = '2017-08-01T10:44:04Z' WHERE flatpak_app_id = 'org.gnome.Glade';
148 | UPDATE public.app SET in_store_since_date = '2017-11-08T06:21:40Z' WHERE flatpak_app_id = 'org.signal.Signal';
149 | UPDATE public.app SET in_store_since_date = '2017-12-05T12:54:55Z' WHERE flatpak_app_id = 'com.github.birros.WebArchives';
150 | UPDATE public.app SET in_store_since_date = '2017-11-30T08:10:47Z' WHERE flatpak_app_id = 'org.develz.Crawl';
151 | UPDATE public.app SET in_store_since_date = '2017-06-18T08:02:43Z' WHERE flatpak_app_id = 'com.discordapp.Discord';
152 | UPDATE public.app SET in_store_since_date = '2017-07-29T16:13:38Z' WHERE flatpak_app_id = 'org.gnome.Calendar';
153 | UPDATE public.app SET in_store_since_date = '2017-09-08T22:15:59Z' WHERE flatpak_app_id = 'org.gnome.Photos';
154 | UPDATE public.app SET in_store_since_date = '2017-12-04T16:17:51Z' WHERE flatpak_app_id = 'com.viewizard.AstroMenace';
155 | UPDATE public.app SET in_store_since_date = '2017-11-07T17:24:26Z' WHERE flatpak_app_id = 'com.github.bajoja.indicator-kdeconnect';
156 | UPDATE public.app SET in_store_since_date = '2018-01-11T18:45:04Z' WHERE flatpak_app_id = 'org.gnome.ghex';
157 | UPDATE public.app SET in_store_since_date = '2017-04-12T17:32:08Z' WHERE flatpak_app_id = 'net.supertuxkart.SuperTuxKart';
158 | UPDATE public.app SET in_store_since_date = '2017-09-15T16:59:39Z' WHERE flatpak_app_id = 'org.subsurface_divelog.Subsurface';
159 | UPDATE public.app SET in_store_since_date = '2017-11-16T09:47:45Z' WHERE flatpak_app_id = 'org.fedoraproject.MediaWriter';
160 | UPDATE public.app SET in_store_since_date = '2017-09-13T09:37:19Z' WHERE flatpak_app_id = 'com.github.JannikHv.Gydl';
161 | UPDATE public.app SET in_store_since_date = '2017-09-05T15:48:06Z' WHERE flatpak_app_id = 'org.xiphos.Xiphos';
162 | UPDATE public.app SET in_store_since_date = '2017-05-16T23:10:27Z' WHERE flatpak_app_id = 'ws.openarena.OpenArena';
163 | UPDATE public.app SET in_store_since_date = '2017-04-26T06:11:11Z' WHERE flatpak_app_id = 'org.freeciv.Freeciv';
164 | UPDATE public.app SET in_store_since_date = '2017-12-13T12:51:50Z' WHERE flatpak_app_id = 'org.gnome.Gnote';
165 | UPDATE public.app SET in_store_since_date = '2017-11-03T19:22:52Z' WHERE flatpak_app_id = 'org.gnome.Games';
166 | UPDATE public.app SET in_store_since_date = '2017-11-07T17:35:20Z' WHERE flatpak_app_id = 'com.bixense.PasswordCalculator';
167 | UPDATE public.app SET in_store_since_date = '2017-09-26T09:01:51Z' WHERE flatpak_app_id = 'org.gnode.NixView';
168 | UPDATE public.app SET in_store_since_date = '2017-07-06T09:47:02Z' WHERE flatpak_app_id = 'org.gnucash.GnuCash';
169 | UPDATE public.app SET in_store_since_date = '2017-11-23T22:29:08Z' WHERE flatpak_app_id = 'work.openpaper.Paperwork';
170 | UPDATE public.app SET in_store_since_date = '2018-01-05T11:39:07Z' WHERE flatpak_app_id = 'org.kde.kdenlive';
171 | UPDATE public.app SET in_store_since_date = '2017-07-13T19:24:19Z' WHERE flatpak_app_id = 'io.elementary.code';
172 | UPDATE public.app SET in_store_since_date = '2017-09-14T17:55:32Z' WHERE flatpak_app_id = 'ca._0ldsk00l.Nestopia';
173 | UPDATE public.app SET in_store_since_date = '2017-08-09T07:23:26Z' WHERE flatpak_app_id = 'org.freedesktop.Bustle';
174 | UPDATE public.app SET in_store_since_date = '2017-10-19T20:39:20Z' WHERE flatpak_app_id = 'io.github.Freedoom-Phase-2';
175 | UPDATE public.app SET in_store_since_date = '2017-05-12T05:23:30Z' WHERE flatpak_app_id = 'net.minetest.Minetest';
176 | UPDATE public.app SET in_store_since_date = '2018-01-26T21:29:42Z' WHERE flatpak_app_id = 'com.obsproject.Studio';
177 | UPDATE public.app SET in_store_since_date = '2017-07-16T07:09:24Z' WHERE flatpak_app_id = 'ch.x29a.playitslowly';
178 | UPDATE public.app SET in_store_since_date = '2018-01-10T15:54:05Z' WHERE flatpak_app_id = 'com.github.lainsce.notejot';
179 | UPDATE public.app SET in_store_since_date = '2017-12-05T15:16:22Z' WHERE flatpak_app_id = 'org.freefilesync.FreeFileSync';
180 | UPDATE public.app SET in_store_since_date = '2017-08-27T02:09:48Z' WHERE flatpak_app_id = 'com.github.wwmm.pulseeffects';
181 | UPDATE public.app SET in_store_since_date = '2017-10-22T16:09:44Z' WHERE flatpak_app_id = 'io.github.cloose.CuteMarkEd';
182 | UPDATE public.app SET in_store_since_date = '2017-11-07T14:43:27Z' WHERE flatpak_app_id = 'org.gnome.bijiben';
183 | UPDATE public.app SET in_store_since_date = '2017-04-18T04:14:01Z' WHERE flatpak_app_id = 'com.play0ad.zeroad';
184 | UPDATE public.app SET in_store_since_date = '2017-09-28T09:21:44Z' WHERE flatpak_app_id = 'com.github.philip_scott.spice-up';
185 | UPDATE public.app SET in_store_since_date = '2018-01-25T15:57:11Z' WHERE flatpak_app_id = 'org.zotero.Zotero';
186 | UPDATE public.app SET in_store_since_date = '2017-11-14T12:31:07Z' WHERE flatpak_app_id = 'org.gnome.Fractal';
187 | UPDATE public.app SET in_store_since_date = '2017-12-07T17:25:38Z' WHERE flatpak_app_id = 'org.geany.Geany';
188 | UPDATE public.app SET in_store_since_date = '2017-11-15T08:19:46Z' WHERE flatpak_app_id = 'com.github.quaternion';
189 | UPDATE public.app SET in_store_since_date = '2017-04-11T14:21:47Z' WHERE flatpak_app_id = 'org.gnome.FeedReader';
190 | UPDATE public.app SET in_store_since_date = '2017-04-18T03:47:49Z' WHERE flatpak_app_id = 'org.megaglest.MegaGlest';
191 | UPDATE public.app SET in_store_since_date = '2017-04-26T06:23:04Z' WHERE flatpak_app_id = 'net.blockout.BlockOutII';
192 | UPDATE public.app SET in_store_since_date = '2017-11-09T13:29:25Z' WHERE flatpak_app_id = 'org.gnome.Evince';
193 | UPDATE public.app SET in_store_since_date = '2017-11-13T19:32:30Z' WHERE flatpak_app_id = 'org.libreoffice.LibreOffice';
194 | UPDATE public.app SET in_store_since_date = '2017-04-12T14:24:40Z' WHERE flatpak_app_id = 'org.baedert.corebird';
195 | UPDATE public.app SET in_store_since_date = '2018-02-28T14:13:15Z' WHERE flatpak_app_id = 'net.poedit.Poedit';
196 | UPDATE public.app SET in_store_since_date = '2017-05-17T05:40:24Z' WHERE flatpak_app_id = 'net.sourceforge.ExtremeTuxRacer';
197 | UPDATE public.app SET in_store_since_date = '2017-04-15T18:18:25Z' WHERE flatpak_app_id = 'org.tuxfamily.XMoto';
198 | UPDATE public.app SET in_store_since_date = '2017-11-21T12:47:02Z' WHERE flatpak_app_id = 'net.mediaarea.MediaInfo';
199 | UPDATE public.app SET in_store_since_date = '2017-11-09T14:51:21Z' WHERE flatpak_app_id = 'org.gnome.Todo';
200 | UPDATE public.app SET in_store_since_date = '2017-07-21T00:41:01Z' WHERE flatpak_app_id = 'com.jagex.RuneScape';
201 | UPDATE public.app SET in_store_since_date = '2017-12-17T20:19:25Z' WHERE flatpak_app_id = 'io.webtorrent.WebTorrent';
202 | UPDATE public.app SET in_store_since_date = '2017-05-26T07:33:28Z' WHERE flatpak_app_id = 'net.sourceforge.TuxFootball';
203 | UPDATE public.app SET in_store_since_date = '2017-06-23T19:49:04Z' WHERE flatpak_app_id = 'com.github.dahenson.agenda';
204 | UPDATE public.app SET in_store_since_date = '2017-08-04T16:42:14Z' WHERE flatpak_app_id = 'com.scoutshonour.Digital';
205 | UPDATE public.app SET in_store_since_date = '2018-02-09T15:07:26Z' WHERE flatpak_app_id = 'com.anydesk.Anydesk';
206 | UPDATE public.app SET in_store_since_date = '2017-09-12T09:29:20Z' WHERE flatpak_app_id = 'com.github.ojubaorg.Othman';
207 | UPDATE public.app SET in_store_since_date = '2017-11-09T14:40:21Z' WHERE flatpak_app_id = 'org.gnome.gitg';
208 | UPDATE public.app SET in_store_since_date = '2017-04-15T18:24:04Z' WHERE flatpak_app_id = 'net.olofson.KoboDeluxe';
209 | UPDATE public.app SET in_store_since_date = '2017-05-17T05:38:23Z' WHERE flatpak_app_id = 'org.mypaint.MyPaint';
210 | UPDATE public.app SET in_store_since_date = '2018-02-03T22:01:57Z' WHERE flatpak_app_id = 'com.elsevier.MendeleyDesktop';
211 | UPDATE public.app SET in_store_since_date = '2017-09-22T08:30:30Z' WHERE flatpak_app_id = 'org.nextcloud.Nextcloud';
212 | UPDATE public.app SET in_store_since_date = '2017-10-17T08:33:41Z' WHERE flatpak_app_id = 'io.github.Cockatrice.cockatrice';
213 | UPDATE public.app SET in_store_since_date = '2017-11-14T08:34:19Z' WHERE flatpak_app_id = 'org.gnome.gbrainy';
214 | UPDATE public.app SET in_store_since_date = '2017-11-07T15:01:29Z' WHERE flatpak_app_id = 'org.gnome.Calculator';
215 | UPDATE public.app SET in_store_since_date = '2018-02-19T09:30:10Z' WHERE flatpak_app_id = 'org.gnome.dfeet';
216 | UPDATE public.app SET in_store_since_date = '2018-01-24T11:46:32Z' WHERE flatpak_app_id = 'io.github.FreeDM';
217 | UPDATE public.app SET in_store_since_date = '2018-02-14T23:18:27Z' WHERE flatpak_app_id = 'org.mapeditor.Tiled';
218 | UPDATE public.app SET in_store_since_date = '2017-10-18T05:26:01Z' WHERE flatpak_app_id = 'com.viber.Viber';
219 | UPDATE public.app SET in_store_since_date = '2017-04-14T21:08:46Z' WHERE flatpak_app_id = 'io.thp.numptyphysics';
220 | UPDATE public.app SET in_store_since_date = '2017-11-20T08:47:37Z' WHERE flatpak_app_id = 'net.sourceforge.projectM';
221 | UPDATE public.app SET in_store_since_date = '2017-11-30T08:02:15Z' WHERE flatpak_app_id = 'com.grangerhub.Tremulous';
222 | UPDATE public.app SET in_store_since_date = '2018-02-14T09:57:53Z' WHERE flatpak_app_id = 'com.github.bitseater.weather';
--------------------------------------------------------------------------------
/src/main/resources/db/migration/V1/V1.0__Initial_version.sql:
--------------------------------------------------------------------------------
1 | --
2 | -- PostgreSQL database dump
3 | --
4 |
5 | -- Dumped from database version 9.6.5
6 | -- Dumped by pg_dump version 9.6.6
7 |
8 | -- Started on 2018-01-17 07:25:58 CET
9 |
10 | SET statement_timeout = 0;
11 | -- SET lock_timeout = 0;
12 | -- SET idle_in_transaction_session_timeout = 0;
13 | SET client_encoding = 'UTF8';
14 | SET standard_conforming_strings = on;
15 | SET check_function_bodies = false;
16 | SET client_min_messages = warning;
17 | -- SET row_security = off;
18 |
19 | --
20 | -- TOC entry 1 (class 3079 OID 12390)
21 | -- Name: plpgsql; Type: EXTENSION; Schema: -; Owner:
22 | --
23 |
24 | CREATE EXTENSION IF NOT EXISTS plpgsql WITH SCHEMA pg_catalog;
25 |
26 |
27 | --
28 | -- TOC entry 2170 (class 0 OID 0)
29 | -- Dependencies: 1
30 | -- Name: EXTENSION plpgsql; Type: COMMENT; Schema: -; Owner:
31 | --
32 |
33 | COMMENT ON EXTENSION plpgsql IS 'PL/pgSQL procedural language';
34 |
35 |
36 | SET search_path = public, pg_catalog;
37 |
38 | --
39 | -- TOC entry 185 (class 1259 OID 16386)
40 | -- Name: app_app_id_seq; Type: SEQUENCE; Schema: public; Owner: linuxstore
41 | --
42 |
43 | CREATE SEQUENCE app_app_id_seq
44 | START WITH 3052
45 | INCREMENT BY 1
46 | NO MINVALUE
47 | NO MAXVALUE
48 | CACHE 1;
49 |
50 |
51 | ALTER TABLE app_app_id_seq OWNER TO linuxstore;
52 |
53 | SET default_tablespace = '';
54 |
55 | SET default_with_oids = false;
56 |
57 | --
58 | -- TOC entry 188 (class 1259 OID 16399)
59 | -- Name: app; Type: TABLE; Schema: public; Owner: linuxstore
60 | --
61 |
62 | CREATE TABLE app (
63 | app_id integer DEFAULT nextval('app_app_id_seq'::regclass) NOT NULL,
64 | name character varying(128),
65 | summary character varying(1024),
66 | description character varying(4096),
67 | project_license character varying(1024),
68 | homepage_url character varying(2048),
69 | bugtracker_url character varying(2048),
70 | current_release_version character varying,
71 | flatpak_repo_id integer,
72 | flatpak_app_id character varying(128),
73 | first_release_date timestamp with time zone,
74 | first_release_version character varying(1024),
75 | current_release_date timestamp with time zone,
76 | rating double precision,
77 | rating_votes integer
78 | );
79 |
80 |
81 | ALTER TABLE app OWNER TO linuxstore;
82 |
83 | --
84 | -- TOC entry 189 (class 1259 OID 40970)
85 | -- Name: app_category; Type: TABLE; Schema: public; Owner: linuxstore
86 | --
87 |
88 | CREATE TABLE app_category (
89 | app_id integer NOT NULL,
90 | category_id integer NOT NULL
91 | );
92 |
93 |
94 | ALTER TABLE app_category OWNER TO linuxstore;
95 |
96 | --
97 | -- TOC entry 191 (class 1259 OID 41004)
98 | -- Name: category; Type: TABLE; Schema: public; Owner: linuxstore
99 | --
100 |
101 | CREATE TABLE category (
102 | category_id integer NOT NULL,
103 | name character varying(256) NOT NULL
104 | );
105 |
106 |
107 | ALTER TABLE category OWNER TO linuxstore;
108 |
109 | --
110 | -- TOC entry 190 (class 1259 OID 41002)
111 | -- Name: category_category_id_seq; Type: SEQUENCE; Schema: public; Owner: linuxstore
112 | --
113 |
114 | CREATE SEQUENCE category_category_id_seq
115 | START WITH 1
116 | INCREMENT BY 1
117 | NO MINVALUE
118 | NO MAXVALUE
119 | CACHE 1;
120 |
121 |
122 | ALTER TABLE category_category_id_seq OWNER TO linuxstore;
123 |
124 | --
125 | -- TOC entry 2171 (class 0 OID 0)
126 | -- Dependencies: 190
127 | -- Name: category_category_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: linuxstore
128 | --
129 |
130 | ALTER SEQUENCE category_category_id_seq OWNED BY category.category_id;
131 |
132 |
133 | --
134 | -- TOC entry 186 (class 1259 OID 16388)
135 | -- Name: flatpak_repo_flatpak_repo_id_seq; Type: SEQUENCE; Schema: public; Owner: linuxstore
136 | --
137 |
138 | CREATE SEQUENCE flatpak_repo_flatpak_repo_id_seq
139 | START WITH 32
140 | INCREMENT BY 1
141 | NO MINVALUE
142 | NO MAXVALUE
143 | CACHE 1;
144 |
145 |
146 | ALTER TABLE flatpak_repo_flatpak_repo_id_seq OWNER TO linuxstore;
147 |
148 | --
149 | -- TOC entry 187 (class 1259 OID 16390)
150 | -- Name: flatpak_repo; Type: TABLE; Schema: public; Owner: linuxstore
151 | --
152 |
153 | CREATE TABLE flatpak_repo (
154 | flatpak_repo_id integer DEFAULT nextval('flatpak_repo_flatpak_repo_id_seq'::regclass) NOT NULL,
155 | name character varying(128),
156 | description character varying(1024),
157 | url character varying(2048),
158 | homepage_url character varying(2048),
159 | default_branch character varying(128),
160 | gpgkey character varying(16384),
161 | download_flatpakrepo_url character varying(2048)
162 | );
163 |
164 |
165 | ALTER TABLE flatpak_repo OWNER TO linuxstore;
166 |
167 | --
168 | -- TOC entry 193 (class 1259 OID 49156)
169 | -- Name: screenshot; Type: TABLE; Schema: public; Owner: linuxstore
170 | --
171 |
172 | CREATE TABLE screenshot (
173 | screenshot_id integer NOT NULL,
174 | thumb_url character varying(2048),
175 | img_mobile_url character varying(2048),
176 | img_desktop_url character varying(2048),
177 | app_id integer NOT NULL
178 | );
179 |
180 |
181 | ALTER TABLE screenshot OWNER TO linuxstore;
182 |
183 | --
184 | -- TOC entry 192 (class 1259 OID 49154)
185 | -- Name: screenshot_screenshot_id_seq; Type: SEQUENCE; Schema: public; Owner: linuxstore
186 | --
187 |
188 | CREATE SEQUENCE screenshot_screenshot_id_seq
189 | START WITH 1
190 | INCREMENT BY 1
191 | NO MINVALUE
192 | NO MAXVALUE
193 | CACHE 1;
194 |
195 |
196 | ALTER TABLE screenshot_screenshot_id_seq OWNER TO linuxstore;
197 |
198 | --
199 | -- TOC entry 2029 (class 2604 OID 41007)
200 | -- Name: category category_id; Type: DEFAULT; Schema: public; Owner: linuxstore
201 | --
202 |
203 | ALTER TABLE ONLY category ALTER COLUMN category_id SET DEFAULT nextval('category_category_id_seq'::regclass);
204 |
205 |
206 | --
207 | -- TOC entry 2033 (class 2606 OID 16407)
208 | -- Name: app app_pkey; Type: CONSTRAINT; Schema: public; Owner: linuxstore
209 | --
210 |
211 | ALTER TABLE ONLY app
212 | ADD CONSTRAINT app_pkey PRIMARY KEY (app_id);
213 |
214 |
215 | --
216 | -- TOC entry 2037 (class 2606 OID 41017)
217 | -- Name: category category_name_unique; Type: CONSTRAINT; Schema: public; Owner: linuxstore
218 | --
219 |
220 | ALTER TABLE ONLY category
221 | ADD CONSTRAINT category_name_unique UNIQUE (name);
222 |
223 |
224 | --
225 | -- TOC entry 2039 (class 2606 OID 41009)
226 | -- Name: category category_pkey; Type: CONSTRAINT; Schema: public; Owner: linuxstore
227 | --
228 |
229 | ALTER TABLE ONLY category
230 | ADD CONSTRAINT category_pkey PRIMARY KEY (category_id);
231 |
232 |
233 | --
234 | -- TOC entry 2031 (class 2606 OID 16398)
235 | -- Name: flatpak_repo flatpak_repo_pkey; Type: CONSTRAINT; Schema: public; Owner: linuxstore
236 | --
237 |
238 | ALTER TABLE ONLY flatpak_repo
239 | ADD CONSTRAINT flatpak_repo_pkey PRIMARY KEY (flatpak_repo_id);
240 |
241 |
242 | --
243 | -- TOC entry 2042 (class 2606 OID 49163)
244 | -- Name: screenshot screenshot_pkey; Type: CONSTRAINT; Schema: public; Owner: linuxstore
245 | --
246 |
247 | ALTER TABLE ONLY screenshot
248 | ADD CONSTRAINT screenshot_pkey PRIMARY KEY (screenshot_id);
249 |
250 |
251 | --
252 | -- TOC entry 2034 (class 1259 OID 40984)
253 | -- Name: fki_app_category_app_id_fkey; Type: INDEX; Schema: public; Owner: linuxstore
254 | --
255 |
256 | CREATE INDEX fki_app_category_app_id_fkey ON app_category USING btree (app_id);
257 |
258 |
259 | --
260 | -- TOC entry 2035 (class 1259 OID 41015)
261 | -- Name: fki_app_category_category_id_fkey; Type: INDEX; Schema: public; Owner: linuxstore
262 | --
263 |
264 | CREATE INDEX fki_app_category_category_id_fkey ON app_category USING btree (category_id);
265 |
266 |
267 | --
268 | -- TOC entry 2040 (class 1259 OID 49169)
269 | -- Name: fki_screenshot_app_id_fkey; Type: INDEX; Schema: public; Owner: linuxstore
270 | --
271 |
272 | CREATE INDEX fki_screenshot_app_id_fkey ON screenshot USING btree (app_id);
273 |
274 |
275 | --
276 | -- TOC entry 2044 (class 2606 OID 40985)
277 | -- Name: app_category app_category_app_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: linuxstore
278 | --
279 |
280 | ALTER TABLE ONLY app_category
281 | ADD CONSTRAINT app_category_app_id_fkey FOREIGN KEY (app_id) REFERENCES app(app_id);
282 |
283 |
284 | --
285 | -- TOC entry 2045 (class 2606 OID 41010)
286 | -- Name: app_category app_category_category_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: linuxstore
287 | --
288 |
289 | ALTER TABLE ONLY app_category
290 | ADD CONSTRAINT app_category_category_id_fkey FOREIGN KEY (category_id) REFERENCES category(category_id);
291 |
292 |
293 | --
294 | -- TOC entry 2043 (class 2606 OID 16408)
295 | -- Name: app app_flatpak_repo_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: linuxstore
296 | --
297 |
298 | ALTER TABLE ONLY app
299 | ADD CONSTRAINT app_flatpak_repo_id_fkey FOREIGN KEY (flatpak_repo_id) REFERENCES flatpak_repo(flatpak_repo_id);
300 |
301 |
302 | --
303 | -- TOC entry 2046 (class 2606 OID 49164)
304 | -- Name: screenshot screenshot_app_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: linuxstore
305 | --
306 |
307 | ALTER TABLE ONLY screenshot
308 | ADD CONSTRAINT screenshot_app_id_fkey FOREIGN KEY (app_id) REFERENCES app(app_id);
309 |
310 |
311 | -- Completed on 2018-01-17 07:25:58 CET
312 |
313 | --
314 | -- PostgreSQL database dump complete
315 | --
316 |
--------------------------------------------------------------------------------
/src/main/resources/db/migration/V1/V1.1__flatpakrepo_add_current_ostree_commit.sql:
--------------------------------------------------------------------------------
1 | ALTER TABLE public.flatpak_repo
2 | ADD COLUMN current_ostree_commit character varying(128);
--------------------------------------------------------------------------------
/src/main/resources/db/migration/V1/V1.2__app_add_icon_xxx_url.sql:
--------------------------------------------------------------------------------
1 | ALTER TABLE public.app
2 | ADD COLUMN icon_desktop_url character varying(2048);
3 |
4 | ALTER TABLE public.app
5 | ADD COLUMN icon_mobile_url character varying(2048);
--------------------------------------------------------------------------------
/src/main/resources/db/migration/V1/V1.3__app_rename_in_store_since_date.sql:
--------------------------------------------------------------------------------
1 | ALTER TABLE public.app
2 | RENAME first_release_date TO in_store_since_date;
--------------------------------------------------------------------------------
/src/main/resources/db/migration/V1/V1.4__app_rename_current_release_description.sql:
--------------------------------------------------------------------------------
1 | ALTER TABLE public.app
2 | RENAME first_release_version TO current_release_description;
3 |
4 | ALTER TABLE public.app
5 | ALTER COLUMN current_release_description TYPE character varying(4096);
--------------------------------------------------------------------------------
/src/main/resources/db/migration/V1/V1.5__app_add_appdata_xxx_url.sql:
--------------------------------------------------------------------------------
1 | ALTER TABLE public.app
2 | ADD COLUMN help_url character varying(2048);
3 |
4 | ALTER TABLE public.app
5 | ADD COLUMN donation_url character varying(2048);
6 |
7 | ALTER TABLE public.app
8 | ADD COLUMN translate_url character varying(2048);
--------------------------------------------------------------------------------
/src/main/resources/db/migration/V1/V1.6__app_add_appdata_developer_name.sql:
--------------------------------------------------------------------------------
1 | ALTER TABLE public.app
2 | ADD COLUMN developer_name character varying(1024);
--------------------------------------------------------------------------------
/src/main/resources/db/migration/V1/V1.7__apprelease.sql:
--------------------------------------------------------------------------------
1 | CREATE SEQUENCE apprelease_apprelease_id_seq
2 | INCREMENT BY 1
3 | MINVALUE 1
4 | MAXVALUE 9223372036854775807
5 | START 1
6 | CACHE 1
7 | NO CYCLE;
8 |
9 | ALTER TABLE apprelease_apprelease_id_seq OWNER TO linuxstore;
10 |
11 | CREATE TABLE app_release (
12 | apprelease_id integer DEFAULT nextval('apprelease_apprelease_id_seq'::regclass) NOT NULL,
13 | appdata_release_version varchar(1024) NULL,
14 | appdata_release_version_updated bool NOT NULL,
15 | arch varchar(32) NULL,
16 | downloads int4 NOT NULL,
17 | installs int4 NOT NULL,
18 | ostree_commit_date timestamp NULL,
19 | ostree_commit_hash varchar(512) NULL,
20 | ostree_commit_hash_parent varchar(512) NULL,
21 | ostree_commit_subject varchar(2048) NULL,
22 | ostree_commit_date_next timestamp NULL,
23 | updates int4 NOT NULL,
24 | app_id int4 NULL,
25 | download_size varchar(512) NULL,
26 | installed_size varchar(512) NULL,
27 | runtime varchar(512) NULL,
28 | sdk varchar(512) NULL,
29 | is_end_of_life bool NOT NULL,
30 | end_of_life_info varchar(512) NULL,
31 | end_of_life_rebase varchar(512) NULL,
32 | metadata varchar(8192) NULL,
33 | CONSTRAINT app_release_pkey PRIMARY KEY (apprelease_id),
34 | CONSTRAINT app_release FOREIGN KEY (app_id) REFERENCES app(app_id)
35 | );
36 |
37 |
38 | ALTER TABLE app_release OWNER TO linuxstore;
--------------------------------------------------------------------------------
/src/test/java/org/flathub/ApiApplicationTests.java:
--------------------------------------------------------------------------------
1 | package org.flathub;
2 |
3 | import org.junit.Test;
4 | import org.junit.runner.RunWith;
5 | import org.springframework.boot.test.context.SpringBootTest;
6 | import org.springframework.test.context.ActiveProfiles;
7 | import org.springframework.test.context.junit4.SpringRunner;
8 |
9 | @RunWith(SpringRunner.class)
10 | @SpringBootTest(webEnvironment= SpringBootTest.WebEnvironment.RANDOM_PORT)
11 | @ActiveProfiles(value = "DEV")
12 | public class ApiApplicationTests {
13 |
14 | @SuppressWarnings("EmptyMethod")
15 | @Test
16 | public void contextLoads() {
17 | }
18 |
19 | }
20 |
--------------------------------------------------------------------------------
/src/test/java/org/flathub/api/service/ApiServiceImplTest.java:
--------------------------------------------------------------------------------
1 | package org.flathub.api.service;
2 |
3 | import org.flathub.api.model.App;
4 | import org.junit.Test;
5 | import org.junit.runner.RunWith;
6 | import org.springframework.beans.factory.annotation.Autowired;
7 | import org.springframework.boot.test.context.SpringBootTest;
8 | import org.springframework.test.context.ActiveProfiles;
9 | import org.springframework.test.context.junit4.SpringRunner;
10 |
11 | import java.util.List;
12 |
13 | import static org.assertj.core.api.Assertions.assertThat;
14 |
15 | /**
16 | * Created by jorge on 17/12/17.
17 | */
18 |
19 | @RunWith(SpringRunner.class)
20 | @SpringBootTest(webEnvironment= SpringBootTest.WebEnvironment.RANDOM_PORT)
21 | @ActiveProfiles(value = "DEV")
22 | public class ApiServiceImplTest {
23 |
24 |
25 | @Autowired
26 | ApiService service;
27 |
28 | @Test
29 | public void findAllApps() throws Exception {
30 |
31 | //Given
32 |
33 | //When
34 | List