diff --git a/qqq-sample-project/src/main/java/com/kingsrook/sampleapp/ConfigFileBasedSampleJavalinServer.java b/qqq-sample-project/src/main/java/com/kingsrook/sampleapp/ConfigFileBasedSampleJavalinServer.java new file mode 100644 index 00000000..07973c3a --- /dev/null +++ b/qqq-sample-project/src/main/java/com/kingsrook/sampleapp/ConfigFileBasedSampleJavalinServer.java @@ -0,0 +1,82 @@ +/* + * QQQ - Low-code Application Framework for Engineers. + * Copyright (C) 2021-2022. Kingsrook, LLC + * 651 N Broad St Ste 205 # 6917 | Middletown DE 19709 | United States + * contact@kingsrook.com + * https://github.com/Kingsrook/ + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +package com.kingsrook.sampleapp; + + +import java.util.Arrays; +import com.kingsrook.qqq.backend.core.instances.ConfigFilesBasedQQQApplication; +import com.kingsrook.qqq.backend.core.logging.QLogger; +import com.kingsrook.qqq.middleware.javalin.QApplicationJavalinServer; +import com.kingsrook.sampleapp.metadata.SampleMetaDataProvider; + + +/******************************************************************************* + ** + *******************************************************************************/ +public class ConfigFileBasedSampleJavalinServer +{ + private static final QLogger LOG = QLogger.getLogger(ConfigFileBasedSampleJavalinServer.class); + private final String path; + + + + /******************************************************************************* + ** + *******************************************************************************/ + public static void main(String[] args) + { + String path = "src/main/resources/metadata"; + if(args.length > 0) + { + path = args[0]; + System.out.println("Using path from args [" + path + "]"); + } + + new ConfigFileBasedSampleJavalinServer(path).start(); + } + + /******************************************************************************* + ** Constructor + ** + *******************************************************************************/ + public ConfigFileBasedSampleJavalinServer(String path) + { + this.path = path; + } + + + /******************************************************************************* + ** + *******************************************************************************/ + public void start() + { + try + { + new QApplicationJavalinServer(new ConfigFilesBasedQQQApplication(path)).start(); + } + catch(Exception e) + { + LOG.error("Failed to start javalin server. See stack trace for details.", e); + } + } + +} diff --git a/qqq-sample-project/src/main/resources/metadata/filesystemBackend.yaml b/qqq-sample-project/src/main/resources/metadata/filesystemBackend.yaml new file mode 100644 index 00000000..b190aab9 --- /dev/null +++ b/qqq-sample-project/src/main/resources/metadata/filesystemBackend.yaml @@ -0,0 +1,5 @@ +--- +class: FilesystemBackendMetaData +version: 1.0 +name: filesystem +basePath: /tmp/sample-filesystem \ No newline at end of file diff --git a/qqq-sample-project/src/main/resources/metadata/javalin.yaml b/qqq-sample-project/src/main/resources/metadata/javalin.yaml new file mode 100644 index 00000000..357e92bc --- /dev/null +++ b/qqq-sample-project/src/main/resources/metadata/javalin.yaml @@ -0,0 +1,4 @@ +--- +class: QJavalinMetaData +version: 1.0 +loggerDisabled: true \ No newline at end of file diff --git a/qqq-sample-project/src/main/resources/metadata/mockAuthentication.yaml b/qqq-sample-project/src/main/resources/metadata/mockAuthentication.yaml new file mode 100644 index 00000000..3188acdb --- /dev/null +++ b/qqq-sample-project/src/main/resources/metadata/mockAuthentication.yaml @@ -0,0 +1,5 @@ +--- +class: QAuthenticationMetaData +version: 1.0 +name: mock +type: MOCK \ No newline at end of file diff --git a/qqq-sample-project/src/main/resources/metadata/peopleApp.yaml b/qqq-sample-project/src/main/resources/metadata/peopleApp.yaml new file mode 100644 index 00000000..d4af4deb --- /dev/null +++ b/qqq-sample-project/src/main/resources/metadata/peopleApp.yaml @@ -0,0 +1,10 @@ +--- +class: QAppMetaData +version: 1.0 +name: people +icon: + name: person +sections: +- name: People + tables: + - person \ No newline at end of file diff --git a/qqq-sample-project/src/main/resources/metadata/personTable.yaml b/qqq-sample-project/src/main/resources/metadata/personTable.yaml new file mode 100644 index 00000000..1d8b0953 --- /dev/null +++ b/qqq-sample-project/src/main/resources/metadata/personTable.yaml @@ -0,0 +1,41 @@ +--- +class: QTableMetaData +version: 1.0 +name: person +backendName: rdbms +primaryKeyField: id +recordLabelFormat: "%s %s" +recordLabelFields: + - firstName + - lastName +fields: + id: + type: INTEGER + isEditable: false + firstName: + type: STRING + lastName: + type: STRING +## Field(new QFieldMetaData("id", QFieldType.INTEGER).withIsEditable(false)) +## Field(new QFieldMetaData("createDate", QFieldType.DATE_TIME).withBackendName("create_date").withIsEditable(false)) +## Field(new QFieldMetaData("modifyDate", QFieldType.DATE_TIME).withBackendName("modify_date").withIsEditable(false)) +## Field(new QFieldMetaData("firstName", QFieldType.STRING).withBackendName("first_name").withIsRequired(true)) +## Field(new QFieldMetaData("lastName", QFieldType.STRING).withBackendName("last_name").withIsRequired(true)) +## Field(new QFieldMetaData("birthDate", QFieldType.DATE).withBackendName("birth_date")) +## Field(new QFieldMetaData("email", QFieldType.STRING)) +## Field(new QFieldMetaData("isEmployed", QFieldType.BOOLEAN).withBackendName("is_employed")) +## Field(new QFieldMetaData("annualSalary", QFieldType.DECIMAL).withBackendName("annual_salary").withDisplayFormat(DisplayFormat.CURRENCY)) +## Field(new QFieldMetaData("daysWorked", QFieldType.INTEGER).withBackendName("days_worked").withDisplayFormat(DisplayFormat.COMMAS)) +sections: +- name: identity + label: Identity + icon: + name: badge + tier: T1 + fieldNames: + - id + - firstName + - lastName +## Section(new QFieldSection("basicInfo", "Basic Info", new QIcon("dataset"), Tier.T2, List.of("email", "birthDate"))) +## Section(new QFieldSection("employmentInfo", "Employment Info", new QIcon("work"), Tier.T2, List.of("isEmployed", "annualSalary", "daysWorked"))) +## Section(new QFieldSection("dates", "Dates", new QIcon("calendar_month"), Tier.T3, List.of("createDate", "modifyDate"))); diff --git a/qqq-sample-project/src/main/resources/metadata/rdbmsBackend.yaml b/qqq-sample-project/src/main/resources/metadata/rdbmsBackend.yaml new file mode 100644 index 00000000..58864338 --- /dev/null +++ b/qqq-sample-project/src/main/resources/metadata/rdbmsBackend.yaml @@ -0,0 +1,10 @@ +--- +class: RDBMSBackendMetaData +version: 1.0 +name: rdbms +vendor: ${env.RDBMS_VENDOR} +hostName: ${env.RDBMS_HOSTNAME} +port: ${env.RDBMS_PORT} +databaseName: ${env.RDBMS_DATABASE_NAME} +username: ${env.RDBMS_USERNAME} +password: ${env.RDBMS_PASSWORD}