├── service
├── create-app
│ ├── src
│ │ ├── main
│ │ │ └── resources
│ │ │ │ ├── mm
│ │ │ │ ├── dal
│ │ │ │ │ ├── init-data.sql
│ │ │ │ │ ├── tables.sql
│ │ │ │ │ └── pom.xml
│ │ │ │ ├── web
│ │ │ │ │ ├── index.html
│ │ │ │ │ ├── Router.java.ftl
│ │ │ │ │ └── pom.xml
│ │ │ │ ├── top
│ │ │ │ │ ├── build.sh
│ │ │ │ │ ├── README.md
│ │ │ │ │ └── build.bat
│ │ │ │ ├── service
│ │ │ │ │ ├── services.sql
│ │ │ │ │ └── pom.xml
│ │ │ │ ├── dist
│ │ │ │ │ ├── bin
│ │ │ │ │ │ ├── sqlshell.sh
│ │ │ │ │ │ ├── sqlshell.bat
│ │ │ │ │ │ ├── runSqlScript.sh
│ │ │ │ │ │ ├── runSqlScript.bat
│ │ │ │ │ │ ├── lealone.sh
│ │ │ │ │ │ └── lealone.bat
│ │ │ │ │ └── conf
│ │ │ │ │ │ ├── log4j2.xml
│ │ │ │ │ │ └── lealone.yaml
│ │ │ │ ├── test
│ │ │ │ │ ├── SqlScriptTest.java.ftl
│ │ │ │ │ ├── lealone.yaml
│ │ │ │ │ ├── log4j2-test.xml
│ │ │ │ │ ├── TemplateCompilerTest.java.ftl
│ │ │ │ │ ├── pom.xml
│ │ │ │ │ └── AppTest.java.ftl
│ │ │ │ └── main
│ │ │ │ │ ├── pom.xml
│ │ │ │ │ └── App.java.ftl
│ │ │ │ └── sm
│ │ │ │ ├── sql
│ │ │ │ ├── init-data.sql
│ │ │ │ ├── tables.sql
│ │ │ │ └── services.sql
│ │ │ │ ├── top
│ │ │ │ ├── build.sh
│ │ │ │ ├── README.md
│ │ │ │ └── build.bat
│ │ │ │ ├── dist
│ │ │ │ ├── bin
│ │ │ │ │ ├── sqlshell.sh
│ │ │ │ │ ├── sqlshell.bat
│ │ │ │ │ ├── runSqlScript.sh
│ │ │ │ │ ├── runSqlScript.bat
│ │ │ │ │ ├── lealone.sh
│ │ │ │ │ └── lealone.bat
│ │ │ │ ├── conf
│ │ │ │ │ ├── log4j2.xml
│ │ │ │ │ └── lealone.yaml
│ │ │ │ └── assembly.xml
│ │ │ │ ├── test
│ │ │ │ ├── AppTest.java.ftl
│ │ │ │ ├── SqlScriptTest.java.ftl
│ │ │ │ ├── lealone.yaml
│ │ │ │ ├── TemplateCompilerTest.java.ftl
│ │ │ │ └── log4j2-test.xml
│ │ │ │ ├── main
│ │ │ │ └── App.java.ftl
│ │ │ │ └── web
│ │ │ │ ├── index.html
│ │ │ │ └── Router.java.ftl
│ │ └── test
│ │ │ └── java
│ │ │ └── org
│ │ │ └── lealone
│ │ │ └── plugins
│ │ │ └── createapp
│ │ │ └── CreateLealoneAppTest.java
│ ├── README.md
│ └── pom.xml
├── javascript
│ ├── src
│ │ ├── test
│ │ │ ├── resources
│ │ │ │ ├── js
│ │ │ │ │ ├── my-source.js
│ │ │ │ │ ├── hello_service.js
│ │ │ │ │ ├── my-polyglot.js
│ │ │ │ │ ├── user_service.js
│ │ │ │ │ └── my-app.js
│ │ │ │ ├── log4j2-test.xml
│ │ │ │ └── services.sql
│ │ │ └── java
│ │ │ │ └── org
│ │ │ │ └── lealone
│ │ │ │ └── plugins
│ │ │ │ └── js
│ │ │ │ ├── HelloJavaScript.java
│ │ │ │ ├── JavaScriptServerStart.java
│ │ │ │ ├── User.java
│ │ │ │ └── JavaScriptServiceTest.java
│ │ └── main
│ │ │ ├── resources
│ │ │ └── META-INF
│ │ │ │ └── services
│ │ │ │ └── org.lealone.db.service.ServiceExecutorFactory
│ │ │ └── java
│ │ │ └── org
│ │ │ └── lealone
│ │ │ └── plugins
│ │ │ └── js
│ │ │ └── JavaScriptServiceExecutorFactory.java
│ └── pom.xml
├── python
│ ├── src
│ │ ├── test
│ │ │ ├── resources
│ │ │ │ ├── python
│ │ │ │ │ └── hello_service.py
│ │ │ │ └── services.sql
│ │ │ └── java
│ │ │ │ └── org
│ │ │ │ └── lealone
│ │ │ │ └── plugins
│ │ │ │ └── python
│ │ │ │ ├── PythonServerStart.java
│ │ │ │ ├── HelloPython.java
│ │ │ │ └── PythonServiceTest.java
│ │ └── main
│ │ │ ├── resources
│ │ │ └── META-INF
│ │ │ │ └── services
│ │ │ │ └── org.lealone.db.service.ServiceExecutorFactory
│ │ │ └── java
│ │ │ └── org
│ │ │ └── lealone
│ │ │ └── plugins
│ │ │ └── python
│ │ │ └── PythonServiceExecutorFactory.java
│ └── pom.xml
├── tomcat
│ ├── src
│ │ └── main
│ │ │ ├── resources
│ │ │ └── META-INF
│ │ │ │ └── services
│ │ │ │ ├── org.apache.juli.logging.Log
│ │ │ │ └── org.lealone.server.ProtocolServerEngine
│ │ │ └── java
│ │ │ └── org
│ │ │ └── lealone
│ │ │ └── plugins
│ │ │ └── tomcat
│ │ │ ├── TomcatServiceFilter.java
│ │ │ ├── TomcatServerEngine.java
│ │ │ ├── TomcatRouter.java
│ │ │ ├── TomcatHttp11NioProtocol.java
│ │ │ └── TomcatServerConnection.java
│ └── pom.xml
├── vertx
│ ├── src
│ │ └── main
│ │ │ ├── resources
│ │ │ └── META-INF
│ │ │ │ └── services
│ │ │ │ └── org.lealone.server.ProtocolServerEngine
│ │ │ └── java
│ │ │ └── org
│ │ │ └── lealone
│ │ │ └── plugins
│ │ │ └── vertx
│ │ │ └── VertxServerEngine.java
│ └── pom.xml
├── service
│ ├── src
│ │ └── main
│ │ │ └── java
│ │ │ └── org
│ │ │ └── lealone
│ │ │ └── plugins
│ │ │ └── service
│ │ │ └── http
│ │ │ ├── HttpRouter.java
│ │ │ ├── HttpServerEngine.java
│ │ │ └── HttpServer.java
│ └── pom.xml
├── polyglot
│ └── src
│ │ └── main
│ │ └── resources
│ │ └── lealone.yaml
├── spring
│ ├── pom.xml
│ └── src
│ │ ├── main
│ │ └── java
│ │ │ └── org
│ │ │ └── lealone
│ │ │ └── plugins
│ │ │ └── spring
│ │ │ └── LealoneServiceController.java
│ │ └── test
│ │ └── java
│ │ └── org
│ │ └── lealone
│ │ └── plugins
│ │ └── spring
│ │ └── SpringBootApplicationTest.java
└── pom.xml
├── .gitignore
├── test
├── src
│ └── test
│ │ ├── java
│ │ └── org
│ │ │ └── lealone
│ │ │ └── plugins
│ │ │ └── test
│ │ │ ├── service
│ │ │ ├── generated
│ │ │ │ └── GeneratedService.java
│ │ │ ├── DropServiceTest.java
│ │ │ ├── impl
│ │ │ │ ├── DynamicExecutorServiceImpl.java
│ │ │ │ ├── HelloWorldServiceImpl.java
│ │ │ │ ├── UserServiceImpl.java
│ │ │ │ ├── AllTypeServiceImpl.java
│ │ │ │ └── CollectionTypeServiceImpl.java
│ │ │ ├── CollectionTypeServiceTest.java
│ │ │ ├── CreateServiceTest.java
│ │ │ └── DynamicExecutorServiceTest.java
│ │ │ ├── orm
│ │ │ ├── OrmTestBase.java
│ │ │ ├── OrmArrayTest.java
│ │ │ ├── generated
│ │ │ │ ├── Product.java
│ │ │ │ ├── User.java
│ │ │ │ ├── JsonTestTable.java
│ │ │ │ ├── CollectionProperty.java
│ │ │ │ └── CustomerAddress.java
│ │ │ ├── OrmTest.java
│ │ │ └── CollectionPropertyTest.java
│ │ │ ├── PluginServerStart.java
│ │ │ └── DeletePluginsTestData.java
│ │ └── resources
│ │ ├── log4j2-test.xml
│ │ └── lealone.yaml
└── pom.xml
├── orm
├── src
│ └── main
│ │ └── java
│ │ └── org
│ │ └── lealone
│ │ └── plugins
│ │ └── orm
│ │ ├── format
│ │ ├── TypeFormat.java
│ │ ├── NameCaseFormat.java
│ │ ├── ByteFormat.java
│ │ ├── LongFormat.java
│ │ ├── PropertyFormat.java
│ │ ├── StringFormat.java
│ │ ├── FloatFormat.java
│ │ ├── ShortFormat.java
│ │ ├── DoubleFormat.java
│ │ ├── IntegerFormat.java
│ │ ├── BooleanFormat.java
│ │ ├── UuidFormat.java
│ │ ├── DateFormat.java
│ │ ├── TimeFormat.java
│ │ ├── ListFormat.java
│ │ ├── ObjectFormat.java
│ │ ├── BigDecimalFormat.java
│ │ ├── MapFormat.java
│ │ ├── TimestampFormat.java
│ │ ├── BytesFormat.java
│ │ ├── ClobFormat.java
│ │ ├── LowerUnderscoreJsonFormat.java
│ │ ├── SetFormat.java
│ │ ├── ArrayFormat.java
│ │ ├── BlobFormat.java
│ │ ├── FrontendJsonFormat.java
│ │ └── JsonFormat.java
│ │ ├── json
│ │ ├── EncodeException.java
│ │ └── DecodeException.java
│ │ ├── property
│ │ ├── PByte.java
│ │ ├── PFloat.java
│ │ ├── PShort.java
│ │ ├── PBytes.java
│ │ ├── PInteger.java
│ │ ├── PTime.java
│ │ ├── PBigDecimal.java
│ │ ├── PTimestamp.java
│ │ ├── PLong.java
│ │ ├── PBaseDate.java
│ │ ├── PUuid.java
│ │ ├── PSet.java
│ │ ├── PDate.java
│ │ ├── PDouble.java
│ │ ├── PList.java
│ │ ├── PObject.java
│ │ ├── PClob.java
│ │ ├── PBlob.java
│ │ ├── PMap.java
│ │ ├── PBaseNumber.java
│ │ ├── PBoolean.java
│ │ ├── PBaseComparable.java
│ │ ├── PBase.java
│ │ ├── PBaseValueEqual.java
│ │ └── PArray.java
│ │ └── ModelTable.java
└── pom.xml
└── README.md
/service/create-app/src/main/resources/mm/dal/init-data.sql:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/service/javascript/src/test/resources/js/my-source.js:
--------------------------------------------------------------------------------
1 | x => x+1
2 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | *.class
2 | *.jar
3 | .settings
4 | .classpath
5 | .project
6 | target
7 |
--------------------------------------------------------------------------------
/service/create-app/src/main/resources/sm/sql/init-data.sql:
--------------------------------------------------------------------------------
1 | insert into user(name, age) values('zhh', 18);
2 |
--------------------------------------------------------------------------------
/service/python/src/test/resources/python/hello_service.py:
--------------------------------------------------------------------------------
1 | def hello(name):
2 | return "hello " + name;
3 |
--------------------------------------------------------------------------------
/service/javascript/src/test/resources/js/hello_service.js:
--------------------------------------------------------------------------------
1 | function hello(name) {
2 | return "hello " + name;
3 | }
4 |
--------------------------------------------------------------------------------
/service/tomcat/src/main/resources/META-INF/services/org.apache.juli.logging.Log:
--------------------------------------------------------------------------------
1 | org.lealone.plugins.tomcat.TomcatLog
2 |
--------------------------------------------------------------------------------
/service/create-app/src/main/resources/sm/top/build.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | mvn package assembly:assembly -Dmaven.test.skip=true
3 |
--------------------------------------------------------------------------------
/service/vertx/src/main/resources/META-INF/services/org.lealone.server.ProtocolServerEngine:
--------------------------------------------------------------------------------
1 | org.lealone.plugins.vertx.VertxServerEngine
2 |
--------------------------------------------------------------------------------
/service/tomcat/src/main/resources/META-INF/services/org.lealone.server.ProtocolServerEngine:
--------------------------------------------------------------------------------
1 | org.lealone.plugins.tomcat.TomcatServerEngine
2 |
--------------------------------------------------------------------------------
/service/python/src/main/resources/META-INF/services/org.lealone.db.service.ServiceExecutorFactory:
--------------------------------------------------------------------------------
1 | org.lealone.plugins.python.PythonServiceExecutorFactory
--------------------------------------------------------------------------------
/service/javascript/src/main/resources/META-INF/services/org.lealone.db.service.ServiceExecutorFactory:
--------------------------------------------------------------------------------
1 | org.lealone.plugins.js.JavaScriptServiceExecutorFactory
--------------------------------------------------------------------------------
/service/create-app/src/main/resources/mm/dal/tables.sql:
--------------------------------------------------------------------------------
1 | set @packageName '${packageName}.dal.model'; -- 生成的模型类所在的包名
2 | --set @srcDir './src/main/java';-- 生成的模型类对应的源文件所在的根目录
3 |
--------------------------------------------------------------------------------
/service/create-app/src/main/resources/mm/web/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | ${appName}
6 |
7 |
8 |
9 | 看到我了吗?哈哈哈……
10 |
11 |
12 |
--------------------------------------------------------------------------------
/test/src/test/java/org/lealone/plugins/test/service/generated/GeneratedService.java:
--------------------------------------------------------------------------------
1 | package org.lealone.plugins.test.service.generated;
2 |
3 | public class GeneratedService {
4 |
5 | public Integer test(String name) {
6 | return null;
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/service/python/src/test/resources/services.sql:
--------------------------------------------------------------------------------
1 |
2 | create service if not exists hello_service (
3 | hello(name varchar) varchar
4 | )
5 | language 'python' implement by './src/test/resources/python/hello_service.py'
6 | ;
7 |
8 | --execute service hello_service hello('test');
9 |
--------------------------------------------------------------------------------
/service/create-app/src/main/resources/mm/top/build.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | mvn package -Dmaven.test.skip=true
3 | java -cp ${appName}-dist/target/${artifactId}-${version}.jar org.lealone.plugins.service.template.TemplateCompiler -webRoot ${appName}-web/web -targetDir ${appName}-dist/target
4 | mvn assembly:assembly -Dmaven.test.skip=true
5 |
6 |
--------------------------------------------------------------------------------
/orm/src/main/java/org/lealone/plugins/orm/format/TypeFormat.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright Lealone Database Group.
3 | * Licensed under the Server Side Public License, v 1.
4 | * Initial Developer: zhh
5 | */
6 | package org.lealone.plugins.orm.format;
7 |
8 | public interface TypeFormat {
9 |
10 | public Object encode(T v);
11 |
12 | public T decode(Object v);
13 |
14 | }
15 |
--------------------------------------------------------------------------------
/service/javascript/src/test/resources/js/my-polyglot.js:
--------------------------------------------------------------------------------
1 | //js --polyglot --jvm my-polyglot.js
2 | //node --polyglot --jvm my-polyglot.js
3 | //polyglot --jvm my-polyglot.js
4 |
5 | var array = new (Java.type("int[]"))(4);
6 | array[2] = 42;
7 | console.log(array[2]);
8 | array[2];
9 |
10 | var HelloPolyglot = Java.type('org.lealone.plugins.js.HelloPolyglot');
11 | HelloPolyglot.test();
12 |
--------------------------------------------------------------------------------
/orm/src/main/java/org/lealone/plugins/orm/format/NameCaseFormat.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright Lealone Database Group.
3 | * Licensed under the Server Side Public License, v 1.
4 | * Initial Developer: zhh
5 | */
6 | package org.lealone.plugins.orm.format;
7 |
8 | //默认是UPPER_UNDERSCORE
9 | public class NameCaseFormat {
10 |
11 | public String convert(String name) {
12 | return name;
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/service/service/src/main/java/org/lealone/plugins/service/http/HttpRouter.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright Lealone Database Group.
3 | * Licensed under the Server Side Public License, v 1.
4 | * Initial Developer: zhh
5 | */
6 | package org.lealone.plugins.service.http;
7 |
8 | import java.util.Map;
9 |
10 | public interface HttpRouter {
11 | void init(HttpServer server, Map config);
12 | }
13 |
--------------------------------------------------------------------------------
/service/polyglot/src/main/resources/lealone.yaml:
--------------------------------------------------------------------------------
1 | # Copyright Lealone Database Group.
2 | # Licensed under the Server Side Public License, v 1.
3 | # Initial Developer: zhh
4 |
5 | protocol_server_engines:
6 | - name: VERTX
7 | enabled: true
8 | parameters: {
9 | port: 9000,
10 | environment: prod,
11 | web_root: ./web,
12 | jdbc_url: "jdbc:lealone:embed:lealone"
13 | }
14 |
--------------------------------------------------------------------------------
/service/create-app/src/main/resources/sm/sql/tables.sql:
--------------------------------------------------------------------------------
1 | set @packageName '${packageName}.model'; -- 生成的模型类所在的包名
2 | --set @srcDir './src/main/java';-- 生成的模型类对应的源文件所在的根目录
3 |
4 | -- 删除表
5 | drop table if exists user;
6 |
7 | -- 创建表: user,会生成一个名为 User 的模型类
8 | create table if not exists user (
9 | id long auto_increment primary key,
10 | name varchar,
11 | age int
12 | ) package @packageName generate code @srcDir;
13 |
--------------------------------------------------------------------------------
/service/javascript/src/test/resources/js/user_service.js:
--------------------------------------------------------------------------------
1 |
2 | function crud(name) {
3 | // 使用 java 的类
4 | var User = Java.type('org.lealone.plugins.js.User');
5 |
6 | // delete 记录
7 | User.dao.where().name.eq(name).delete();
8 |
9 | // 创建 User 对象
10 | var user = new (User);
11 |
12 | // insert 记录
13 | user.name.set(name).phone.set(456).insert();
14 |
15 | // 查找记录
16 | user = User.dao.where().name.eq(name).findOne();
17 |
18 | return user;
19 | }
20 |
--------------------------------------------------------------------------------
/service/javascript/src/test/resources/js/my-app.js:
--------------------------------------------------------------------------------
1 | const http = require("http");
2 | const span = require("ansispan");
3 | require("colors");
4 |
5 | http.createServer(function (request, response) {
6 | response.writeHead(200, {"Content-Type": "text/html"});
7 | response.end(span("Hello Graal.js!".green));
8 | }).listen(8000, function() { console.log("Graal.js server running at http://127.0.0.1:8000/".red); });
9 |
10 | setTimeout(function() { console.log("DONE!"); process.exit(); }, 200000);
11 |
--------------------------------------------------------------------------------
/service/python/src/test/java/org/lealone/plugins/python/PythonServerStart.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright Lealone Database Group.
3 | * Licensed under the Server Side Public License, v 1.
4 | * Initial Developer: zhh
5 | */
6 | package org.lealone.plugins.python;
7 |
8 | import org.lealone.main.Lealone;
9 |
10 | public class PythonServerStart {
11 |
12 | public static void main(String[] args) {
13 | args = new String[] { "-baseDir", "target/test-data" };
14 | Lealone.main(args);
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/test/src/test/java/org/lealone/plugins/test/service/DropServiceTest.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright Lealone Database Group.
3 | * Licensed under the Server Side Public License, v 1.
4 | * Initial Developer: zhh
5 | */
6 | package org.lealone.plugins.test.service;
7 |
8 | import org.junit.Test;
9 | import org.lealone.test.sql.SqlTestBase;
10 |
11 | public class DropServiceTest extends SqlTestBase {
12 | @Test
13 | public void dropService() {
14 | executeUpdate("drop service if exists test_service");
15 | }
16 | }
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Lealone-Framework
2 |
3 | 与 Lealone 集成的各类框架
4 |
5 |
6 | ### [orm](https://github.com/lealone/Lealone-Plugins/tree/master/orm)
7 |
8 | 超简洁的类型安全的 ORM 框架,[Lealone ORM 框架快速入门](https://github.com/lealone/Lealone-Docs/blob/master/%E5%BA%94%E7%94%A8%E6%96%87%E6%A1%A3/Lealone%20ORM%E6%A1%86%E6%9E%B6%E5%BF%AB%E9%80%9F%E5%85%A5%E9%97%A8.md)
9 |
10 |
11 | ### [service](https://github.com/lealone/Lealone-Plugins/tree/master/service)
12 |
13 | Lealone 微服务框架,可以使用 Java、JavaScript 和 Python 语言在 Lealone 中开发微服务应用
14 |
15 |
16 |
--------------------------------------------------------------------------------
/orm/src/main/java/org/lealone/plugins/orm/format/ByteFormat.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright Lealone Database Group.
3 | * Licensed under the Server Side Public License, v 1.
4 | * Initial Developer: zhh
5 | */
6 | package org.lealone.plugins.orm.format;
7 |
8 | public class ByteFormat implements TypeFormat {
9 |
10 | @Override
11 | public Object encode(Byte v) {
12 | return v;
13 | }
14 |
15 | @Override
16 | public Byte decode(Object v) {
17 | return ((Number) v).byteValue();
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/orm/src/main/java/org/lealone/plugins/orm/format/LongFormat.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright Lealone Database Group.
3 | * Licensed under the Server Side Public License, v 1.
4 | * Initial Developer: zhh
5 | */
6 | package org.lealone.plugins.orm.format;
7 |
8 | public class LongFormat implements TypeFormat {
9 |
10 | @Override
11 | public Object encode(Long v) {
12 | return v;
13 | }
14 |
15 | @Override
16 | public Long decode(Object v) {
17 | return ((Number) v).longValue();
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/orm/src/main/java/org/lealone/plugins/orm/format/PropertyFormat.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright Lealone Database Group.
3 | * Licensed under the Server Side Public License, v 1.
4 | * Initial Developer: zhh
5 | */
6 | package org.lealone.plugins.orm.format;
7 |
8 | import java.util.Map;
9 |
10 | public class PropertyFormat {
11 |
12 | /**
13 | * @return true 已经编码完成;false 没有编码,让后续的编码器继续处理
14 | */
15 | public boolean encode(Map map, String name, Object value) {
16 | return false;
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/orm/src/main/java/org/lealone/plugins/orm/format/StringFormat.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright Lealone Database Group.
3 | * Licensed under the Server Side Public License, v 1.
4 | * Initial Developer: zhh
5 | */
6 | package org.lealone.plugins.orm.format;
7 |
8 | public class StringFormat implements TypeFormat {
9 |
10 | @Override
11 | public Object encode(String v) {
12 | return v;
13 | }
14 |
15 | @Override
16 | public String decode(Object v) {
17 | return v.toString();
18 | }
19 |
20 | }
21 |
--------------------------------------------------------------------------------
/orm/src/main/java/org/lealone/plugins/orm/format/FloatFormat.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright Lealone Database Group.
3 | * Licensed under the Server Side Public License, v 1.
4 | * Initial Developer: zhh
5 | */
6 | package org.lealone.plugins.orm.format;
7 |
8 | public class FloatFormat implements TypeFormat {
9 |
10 | @Override
11 | public Object encode(Float v) {
12 | return v;
13 | }
14 |
15 | @Override
16 | public Float decode(Object v) {
17 | return ((Number) v).floatValue();
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/orm/src/main/java/org/lealone/plugins/orm/format/ShortFormat.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright Lealone Database Group.
3 | * Licensed under the Server Side Public License, v 1.
4 | * Initial Developer: zhh
5 | */
6 | package org.lealone.plugins.orm.format;
7 |
8 | public class ShortFormat implements TypeFormat {
9 |
10 | @Override
11 | public Object encode(Short v) {
12 | return v;
13 | }
14 |
15 | @Override
16 | public Short decode(Object v) {
17 | return ((Number) v).shortValue();
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/orm/src/main/java/org/lealone/plugins/orm/format/DoubleFormat.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright Lealone Database Group.
3 | * Licensed under the Server Side Public License, v 1.
4 | * Initial Developer: zhh
5 | */
6 | package org.lealone.plugins.orm.format;
7 |
8 | public class DoubleFormat implements TypeFormat {
9 |
10 | @Override
11 | public Object encode(Double v) {
12 | return v;
13 | }
14 |
15 | @Override
16 | public Double decode(Object v) {
17 | return ((Number) v).doubleValue();
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/orm/src/main/java/org/lealone/plugins/orm/format/IntegerFormat.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright Lealone Database Group.
3 | * Licensed under the Server Side Public License, v 1.
4 | * Initial Developer: zhh
5 | */
6 | package org.lealone.plugins.orm.format;
7 |
8 | public class IntegerFormat implements TypeFormat {
9 |
10 | @Override
11 | public Object encode(Integer v) {
12 | return v;
13 | }
14 |
15 | @Override
16 | public Integer decode(Object v) {
17 | return ((Number) v).intValue();
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/service/create-app/src/main/resources/sm/sql/services.sql:
--------------------------------------------------------------------------------
1 | set @packageName '${packageName}.service.generated'; -- 生成的服务接口所在的包名
2 | --set @srcDir './src/main/java'; -- 生成的服务接口对应的源文件所在的根目录
3 |
4 | -- 删除服务: hello_service
5 | drop service if exists hello_service;
6 |
7 | -- 创建服务: hello_service,会生成一个对应的 HelloService 接口
8 | create service if not exists hello_service (
9 | say_hello(name varchar) varchar
10 | )
11 | package @packageName
12 | implement by '${packageName}.service.HelloServiceImpl' -- HelloService 接口的默认实现类
13 | generate code @srcDir;
14 |
--------------------------------------------------------------------------------
/service/python/src/test/java/org/lealone/plugins/python/HelloPython.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright Lealone Database Group.
3 | * Licensed under the Server Side Public License, v 1.
4 | * Initial Developer: zhh
5 | */
6 | package org.lealone.plugins.python;
7 |
8 | import org.graalvm.polyglot.Context;
9 |
10 | public class HelloPython {
11 |
12 | public static void main(String[] args) {
13 | try (Context context = Context.create()) {
14 | context.eval("js", "print('Hello Python!');");
15 | }
16 | }
17 |
18 | }
19 |
--------------------------------------------------------------------------------
/service/javascript/src/test/java/org/lealone/plugins/js/HelloJavaScript.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright Lealone Database Group.
3 | * Licensed under the Server Side Public License, v 1.
4 | * Initial Developer: zhh
5 | */
6 | package org.lealone.plugins.js;
7 |
8 | import org.graalvm.polyglot.Context;
9 |
10 | public class HelloJavaScript {
11 |
12 | public static void main(String[] args) {
13 | try (Context context = Context.create()) {
14 | context.eval("js", "print('Hello JavaScript!');");
15 | }
16 | }
17 |
18 | }
19 |
--------------------------------------------------------------------------------
/orm/src/main/java/org/lealone/plugins/orm/format/BooleanFormat.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright Lealone Database Group.
3 | * Licensed under the Server Side Public License, v 1.
4 | * Initial Developer: zhh
5 | */
6 | package org.lealone.plugins.orm.format;
7 |
8 | public class BooleanFormat implements TypeFormat {
9 |
10 | @Override
11 | public Object encode(Boolean value) {
12 | return value ? 1 : 0;
13 | }
14 |
15 | @Override
16 | public Boolean decode(Object v) {
17 | return ((Number) v).byteValue() != 0;
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/service/service/src/main/java/org/lealone/plugins/service/http/HttpServerEngine.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright Lealone Database Group.
3 | * Licensed under the Server Side Public License, v 1.
4 | * Initial Developer: zhh
5 | */
6 | package org.lealone.plugins.service.http;
7 |
8 | import org.lealone.server.ProtocolServerEngineBase;
9 |
10 | public abstract class HttpServerEngine extends ProtocolServerEngineBase {
11 |
12 | public static final String NAME = "vertx";
13 |
14 | public HttpServerEngine(String name) {
15 | super(name);
16 | }
17 |
18 | }
19 |
--------------------------------------------------------------------------------
/orm/src/main/java/org/lealone/plugins/orm/format/UuidFormat.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright Lealone Database Group.
3 | * Licensed under the Server Side Public License, v 1.
4 | * Initial Developer: zhh
5 | */
6 | package org.lealone.plugins.orm.format;
7 |
8 | import java.util.UUID;
9 |
10 | public class UuidFormat implements TypeFormat {
11 |
12 | @Override
13 | public Object encode(UUID v) {
14 | return v.toString();
15 | }
16 |
17 | @Override
18 | public UUID decode(Object v) {
19 | return UUID.fromString(v.toString());
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/orm/src/main/java/org/lealone/plugins/orm/format/DateFormat.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright Lealone Database Group.
3 | * Licensed under the Server Side Public License, v 1.
4 | * Initial Developer: zhh
5 | */
6 | package org.lealone.plugins.orm.format;
7 |
8 | import java.sql.Date;
9 |
10 | public class DateFormat implements TypeFormat {
11 |
12 | @Override
13 | public Object encode(Date v) {
14 | return v.getTime();
15 | }
16 |
17 | @Override
18 | public Date decode(Object v) {
19 | return new Date(((Number) v).longValue());
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/orm/src/main/java/org/lealone/plugins/orm/format/TimeFormat.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright Lealone Database Group.
3 | * Licensed under the Server Side Public License, v 1.
4 | * Initial Developer: zhh
5 | */
6 | package org.lealone.plugins.orm.format;
7 |
8 | import java.sql.Time;
9 |
10 | public class TimeFormat implements TypeFormat