├── 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