From 32c4c04a7557c6f52dc1483612b898c22c2cc079 Mon Sep 17 00:00:00 2001 From: dorav Date: Mon, 11 Dec 2023 12:16:54 +0200 Subject: [PATCH] examples: added another maven & gradle examples (#24) --- examples/e2e_java_example/.gitignore | 42 +++++++++ examples/e2e_java_example/atlas.hcl | 21 +++++ examples/e2e_java_example/build.gradle.kts | 16 ++++ examples/e2e_java_example/gradlew | 1 + examples/e2e_java_example/settings.gradle.kts | 2 + .../src/main/java/org/example/Actor.java | 20 +++++ .../src/main/java/org/example/Main.java | 25 ++++++ .../src/main/java/org/example/Movie.java | 15 ++++ .../java/org/example/MovieParticipation.java | 25 ++++++ .../org/example/MovieParticipationKey.java | 17 ++++ .../src/main/resources/hibernate.properties | 9 ++ .../main/resources/schema-export.properties | 2 + examples/maven_project_spring_example/pom.xml | 89 +++++++++++++++++++ .../maven_project_spring_example/private.pgp | 17 ++++ .../com/example/H2ServiceRegistryBuilder.java | 28 ++++++ .../main/java/com/example/HibernateUtil.java | 30 +++++++ .../src/main/java/com/example/Main.java | 13 +++ .../java/com/example/MetadataBuilder.java | 17 ++++ .../java/com/example/minimodel/Location.java | 31 +++++++ .../java/com/example/model/Department.java | 39 ++++++++ .../main/java/com/example/model/Employee.java | 46 ++++++++++ .../src/main/resources/log4j.properties | 1 + .../main/resources/schema-export.properties | 6 ++ .../migrations/20231210140844.sql | 6 ++ .../migrations/atlas.sum | 2 + 25 files changed, 520 insertions(+) create mode 100644 examples/e2e_java_example/.gitignore create mode 100644 examples/e2e_java_example/atlas.hcl create mode 100644 examples/e2e_java_example/build.gradle.kts create mode 120000 examples/e2e_java_example/gradlew create mode 100644 examples/e2e_java_example/settings.gradle.kts create mode 100644 examples/e2e_java_example/src/main/java/org/example/Actor.java create mode 100644 examples/e2e_java_example/src/main/java/org/example/Main.java create mode 100644 examples/e2e_java_example/src/main/java/org/example/Movie.java create mode 100644 examples/e2e_java_example/src/main/java/org/example/MovieParticipation.java create mode 100644 examples/e2e_java_example/src/main/java/org/example/MovieParticipationKey.java create mode 100644 examples/e2e_java_example/src/main/resources/hibernate.properties create mode 100644 examples/e2e_java_example/src/main/resources/schema-export.properties create mode 100644 examples/maven_project_spring_example/pom.xml create mode 100644 examples/maven_project_spring_example/private.pgp create mode 100644 examples/maven_project_spring_example/src/main/java/com/example/H2ServiceRegistryBuilder.java create mode 100644 examples/maven_project_spring_example/src/main/java/com/example/HibernateUtil.java create mode 100644 examples/maven_project_spring_example/src/main/java/com/example/Main.java create mode 100644 examples/maven_project_spring_example/src/main/java/com/example/MetadataBuilder.java create mode 100644 examples/maven_project_spring_example/src/main/java/com/example/minimodel/Location.java create mode 100644 examples/maven_project_spring_example/src/main/java/com/example/model/Department.java create mode 100644 examples/maven_project_spring_example/src/main/java/com/example/model/Employee.java create mode 100644 examples/maven_project_spring_example/src/main/resources/log4j.properties create mode 100644 examples/maven_project_spring_example/src/main/resources/schema-export.properties create mode 100644 examples/with_local_plugin_repository/migrations/20231210140844.sql create mode 100644 examples/with_local_plugin_repository/migrations/atlas.sum diff --git a/examples/e2e_java_example/.gitignore b/examples/e2e_java_example/.gitignore new file mode 100644 index 0000000..b63da45 --- /dev/null +++ b/examples/e2e_java_example/.gitignore @@ -0,0 +1,42 @@ +.gradle +build/ +!gradle/wrapper/gradle-wrapper.jar +!**/src/main/**/build/ +!**/src/test/**/build/ + +### IntelliJ IDEA ### +.idea/modules.xml +.idea/jarRepositories.xml +.idea/compiler.xml +.idea/libraries/ +*.iws +*.iml +*.ipr +out/ +!**/src/main/**/out/ +!**/src/test/**/out/ + +### Eclipse ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache +bin/ +!**/src/main/**/bin/ +!**/src/test/**/bin/ + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ + +### VS Code ### +.vscode/ + +### Mac OS ### +.DS_Store \ No newline at end of file diff --git a/examples/e2e_java_example/atlas.hcl b/examples/e2e_java_example/atlas.hcl new file mode 100644 index 0000000..4563c86 --- /dev/null +++ b/examples/e2e_java_example/atlas.hcl @@ -0,0 +1,21 @@ +data "external_schema" "hibernate" { + program = [ + "./gradlew", + "-q", + "schema", + "--properties", "schema-export.properties" + ] +} + +env "hibernate" { + src = data.external_schema.hibernate.url + dev = "docker://postgres/15/dev?search_path=public" + migration { + dir = "file://migrations" + } + format { + migrate { + diff = "{{ sql . \" \" }}" + } + } +} diff --git a/examples/e2e_java_example/build.gradle.kts b/examples/e2e_java_example/build.gradle.kts new file mode 100644 index 0000000..d30c62c --- /dev/null +++ b/examples/e2e_java_example/build.gradle.kts @@ -0,0 +1,16 @@ +plugins { + id("java") + id("io.atlasgo.hibernate-provider-gradle-plugin") version "0.1" +} + +group = "org.example" +version = "1.0-SNAPSHOT" + +repositories { + mavenCentral() +} + +dependencies { + implementation("org.hibernate.orm:hibernate-core:6.4.0.Final") + implementation("org.postgresql:postgresql:42.7.0") +} \ No newline at end of file diff --git a/examples/e2e_java_example/gradlew b/examples/e2e_java_example/gradlew new file mode 120000 index 0000000..343e0d2 --- /dev/null +++ b/examples/e2e_java_example/gradlew @@ -0,0 +1 @@ +../../gradlew \ No newline at end of file diff --git a/examples/e2e_java_example/settings.gradle.kts b/examples/e2e_java_example/settings.gradle.kts new file mode 100644 index 0000000..503a06b --- /dev/null +++ b/examples/e2e_java_example/settings.gradle.kts @@ -0,0 +1,2 @@ +rootProject.name = "e2e_java_example" + diff --git a/examples/e2e_java_example/src/main/java/org/example/Actor.java b/examples/e2e_java_example/src/main/java/org/example/Actor.java new file mode 100644 index 0000000..c4a784e --- /dev/null +++ b/examples/e2e_java_example/src/main/java/org/example/Actor.java @@ -0,0 +1,20 @@ +package org.example; + +import jakarta.persistence.*; + +import java.util.List; +import java.util.Set; + +@Entity +@Table(name = "Actors") +public class Actor { + Actor(String name) { + this.name = name; + } + + @Id + public String name; + + @OneToMany(mappedBy = "actor", cascade = CascadeType.PERSIST) + public Set actedIn; +} diff --git a/examples/e2e_java_example/src/main/java/org/example/Main.java b/examples/e2e_java_example/src/main/java/org/example/Main.java new file mode 100644 index 0000000..e83cb33 --- /dev/null +++ b/examples/e2e_java_example/src/main/java/org/example/Main.java @@ -0,0 +1,25 @@ +package org.example; + +import org.hibernate.SessionFactory; +import org.hibernate.boot.MetadataSources; + +import java.util.Set; + +public class Main { + public static void main(String[] args) { + SessionFactory sessionFactory = new MetadataSources() + .addAnnotatedClass(Movie.class) + .addAnnotatedClass(Actor.class) + .addAnnotatedClass(MovieParticipation.class) + .buildMetadata() + .buildSessionFactory(); + + sessionFactory.inTransaction(session -> { + Movie matrix = new Movie(); + matrix.title = "The Matrix"; + Actor keanuReeves = new Actor("Keanu Reeves"); + keanuReeves.actedIn = Set.of(new MovieParticipation(matrix, keanuReeves)); + session.persist(keanuReeves); + }); + } +} \ No newline at end of file diff --git a/examples/e2e_java_example/src/main/java/org/example/Movie.java b/examples/e2e_java_example/src/main/java/org/example/Movie.java new file mode 100644 index 0000000..246d2e9 --- /dev/null +++ b/examples/e2e_java_example/src/main/java/org/example/Movie.java @@ -0,0 +1,15 @@ +package org.example; + +import jakarta.persistence.*; + +import java.util.List; + +@Entity +@Table(name = "Movies") +public class Movie { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + public Long id; + + public String title; +} diff --git a/examples/e2e_java_example/src/main/java/org/example/MovieParticipation.java b/examples/e2e_java_example/src/main/java/org/example/MovieParticipation.java new file mode 100644 index 0000000..fbd1631 --- /dev/null +++ b/examples/e2e_java_example/src/main/java/org/example/MovieParticipation.java @@ -0,0 +1,25 @@ +package org.example; + +import jakarta.persistence.*; + +@Entity +public class MovieParticipation { + MovieParticipation(Movie movie, Actor actor) { + this.key = new MovieParticipationKey(movie.id, actor.name); + this.actor = actor; + this.movie = movie; + } + + @EmbeddedId + public MovieParticipationKey key; + + @ManyToOne(cascade=CascadeType.PERSIST) + @MapsId("movieId") + @JoinColumn(name = "movieId") + Movie movie; + + @ManyToOne(cascade=CascadeType.PERSIST) + @MapsId("actorName") + @JoinColumn(name = "actorName") + Actor actor; +} diff --git a/examples/e2e_java_example/src/main/java/org/example/MovieParticipationKey.java b/examples/e2e_java_example/src/main/java/org/example/MovieParticipationKey.java new file mode 100644 index 0000000..85758e4 --- /dev/null +++ b/examples/e2e_java_example/src/main/java/org/example/MovieParticipationKey.java @@ -0,0 +1,17 @@ +package org.example; + +import jakarta.persistence.Column; +import jakarta.persistence.Embeddable; + +import java.io.Serializable; + +@Embeddable +public class MovieParticipationKey implements Serializable { + public MovieParticipationKey(Long movieId, String actorName) { + this.movieId = movieId; + this.actorName = actorName; + } + public Long movieId; + + public String actorName; +} \ No newline at end of file diff --git a/examples/e2e_java_example/src/main/resources/hibernate.properties b/examples/e2e_java_example/src/main/resources/hibernate.properties new file mode 100644 index 0000000..8fadce9 --- /dev/null +++ b/examples/e2e_java_example/src/main/resources/hibernate.properties @@ -0,0 +1,9 @@ +hibernate.connection.url=jdbc:postgresql://localhost:5432/postgres +hibernate.connection.username=postgres +hibernate.connection.password=password + +hibernate.show_sql=true +hibernate.format_sql=true +hibernate.highlight_sql=true + +hibernate.hbm2ddl.auto=create diff --git a/examples/e2e_java_example/src/main/resources/schema-export.properties b/examples/e2e_java_example/src/main/resources/schema-export.properties new file mode 100644 index 0000000..09b42cc --- /dev/null +++ b/examples/e2e_java_example/src/main/resources/schema-export.properties @@ -0,0 +1,2 @@ +jakarta.persistence.database-product-name=PostgreSQL +jakarta.persistence.database-major-version=15 \ No newline at end of file diff --git a/examples/maven_project_spring_example/pom.xml b/examples/maven_project_spring_example/pom.xml new file mode 100644 index 0000000..f5a9a23 --- /dev/null +++ b/examples/maven_project_spring_example/pom.xml @@ -0,0 +1,89 @@ + + + 4.0.0 + + maven_project_example + org.example + 1.0-SNAPSHOT + + + com.example + maven-spring-example + 1.0 + + + UTF-8 + 11 + 11 + + + + + org.hibernate.orm + hibernate-core + 6.2.13.Final + + + + org.jetbrains.kotlin + kotlin-stdlib + 1.9.20 + compile + + + + mysql + mysql-connector-java + 8.0.33 + + + + com.h2database + h2 + 2.2.224 + runtime + + + + org.postgresql + postgresql + 42.7.0 + + + + io.atlasgo + hibernate-provider-maven-plugin + 0.1 + + + + org.springframework.boot + spring-boot-autoconfigure + 3.2.0 + + + + org.slf4j + slf4j-log4j12 + 2.0.9 + + + + org.springframework.boot + spring-boot-starter-data-jpa + 3.2.0 + + + org.springframework.boot + spring-boot-starter-logging + + + + + + + + ${project.basedir}/src/main/java + + + diff --git a/examples/maven_project_spring_example/private.pgp b/examples/maven_project_spring_example/private.pgp new file mode 100644 index 0000000..99142fc --- /dev/null +++ b/examples/maven_project_spring_example/private.pgp @@ -0,0 +1,17 @@ +-----BEGIN PGP PRIVATE KEY BLOCK----- + +lIYEZXA6axYJKwYBBAHaRw8BAQdAXGMVgjm1eYjVZyeSu10iaIOWeDwNwrI8pSoh +C8eRNPT+BwMCO7sNTz2yAyD1YwnbHp4evuz2IkIdJuvWj+5/3UmEvaBGOuiv8aoT +O6vD74EN5cNRjlnz52aRX9vh+9+73t6cImiK3/AjIaiovBhwTG/yeLQWQXJpZ2Et +aXQgPGl0QGFyaWdhLmlvPoiZBBMWCgBBFiEEHDW4Gu+ioUHPCJr+y7ibSLsZCX0F +AmVwOmsCGwMFCQWjmoAFCwkIBwICIgIGFQoJCAsCBBYCAwECHgcCF4AACgkQy7ib +SLsZCX0y5QEAnrPx9t2FB847hEGEXSOyK2rCYkwFGgr6SEI1BI4p0RsBAKSg2UKk +uxVL7Mo7PNvyNyKfJKadZ8N8d+BWjbR4iSYAnIsEZXA6axIKKwYBBAGXVQEFAQEH +QI3GSAr9+2xLbMlEMDmZLCOnHr+Wcf55SYvxhWWzkDlAAwEIB/4HAwItX7A0CRoz +5vUxHj2s82NRJoaoMPddIZE3CghfOz8ubE5Ds7jaJWhnxyM5fb3HsFmaeq7srEJk +DGiia/Cra34MM6F/dLCbEdg0RCsfa6X9iH4EGBYKACYWIQQcNbga76KhQc8Imv7L +uJtIuxkJfQUCZXA6awIbDAUJBaOagAAKCRDLuJtIuxkJfXRVAQCfsR08ZOgdlWwO +NYZtZQGkjYX2wHaFHxXEZSgjAuoTcgEAgFCRwFXXsJZJ+GaMsfa+TxosK6lh5a9k +bilF82JcEww= +=7L48 +-----END PGP PRIVATE KEY BLOCK----- diff --git a/examples/maven_project_spring_example/src/main/java/com/example/H2ServiceRegistryBuilder.java b/examples/maven_project_spring_example/src/main/java/com/example/H2ServiceRegistryBuilder.java new file mode 100644 index 0000000..278f4bb --- /dev/null +++ b/examples/maven_project_spring_example/src/main/java/com/example/H2ServiceRegistryBuilder.java @@ -0,0 +1,28 @@ +package com.example; + +import org.hibernate.boot.registry.StandardServiceRegistryBuilder; +import org.hibernate.cfg.AvailableSettings; +import org.hibernate.service.ServiceRegistry; + +import java.util.Map; +import java.util.Properties; +import java.util.function.Function; + +public class H2ServiceRegistryBuilder implements Function { + public H2ServiceRegistryBuilder() { + + } + + @Override + public ServiceRegistry apply(Properties properties) { + return new StandardServiceRegistryBuilder() + .applySettings(Map.of( + "hibernate.connection.url","jdbc:h2:mem:testdb", + AvailableSettings.SCHEMA_MANAGEMENT_TOOL, properties.get(AvailableSettings.SCHEMA_MANAGEMENT_TOOL), + "hibernate.temp.use_jdbc_metadata_defaults", true, + "jakarta.persistence.database-product-name", "H2", + "jakarta.persistence.database-major-version", "", + "hibernate.connection.provider_class", "")) + .build(); + } +} \ No newline at end of file diff --git a/examples/maven_project_spring_example/src/main/java/com/example/HibernateUtil.java b/examples/maven_project_spring_example/src/main/java/com/example/HibernateUtil.java new file mode 100644 index 0000000..8633188 --- /dev/null +++ b/examples/maven_project_spring_example/src/main/java/com/example/HibernateUtil.java @@ -0,0 +1,30 @@ +package com.example; + +import org.hibernate.SessionFactory; +import org.hibernate.cfg.Configuration; + +public class HibernateUtil { + + private static final SessionFactory sessionFactory = buildSessionFactory(); + + private static SessionFactory buildSessionFactory() { + try { + // Create the SessionFactory from hibernate.cfg.xml + return new Configuration().configure().buildSessionFactory(); + } catch (Throwable ex) { + // Make sure you log the exception, as it might be swallowed + System.err.println("Initial SessionFactory creation failed." + ex); + throw new ExceptionInInitializerError(ex); + } + } + + public static SessionFactory getSessionFactory() { + return sessionFactory; + } + + public static void shutdown() { + // Close caches and connection pools + getSessionFactory().close(); + } + +} \ No newline at end of file diff --git a/examples/maven_project_spring_example/src/main/java/com/example/Main.java b/examples/maven_project_spring_example/src/main/java/com/example/Main.java new file mode 100644 index 0000000..980dbdc --- /dev/null +++ b/examples/maven_project_spring_example/src/main/java/com/example/Main.java @@ -0,0 +1,13 @@ +package com.example; + +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.context.annotation.AnnotationConfigApplicationContext; +import org.springframework.context.annotation.PropertySource; + +@SpringBootApplication +@PropertySource(value = {"classpath:schema-export.properties"}) +public class Main { + public static void main(String[] args) { + new AnnotationConfigApplicationContext(Main.class); + } +} diff --git a/examples/maven_project_spring_example/src/main/java/com/example/MetadataBuilder.java b/examples/maven_project_spring_example/src/main/java/com/example/MetadataBuilder.java new file mode 100644 index 0000000..f309d76 --- /dev/null +++ b/examples/maven_project_spring_example/src/main/java/com/example/MetadataBuilder.java @@ -0,0 +1,17 @@ +package com.example; + +import com.example.minimodel.Location; +import org.hibernate.boot.Metadata; +import org.hibernate.boot.MetadataSources; +import org.hibernate.service.ServiceRegistry; + +import java.util.function.Function; + +public class MetadataBuilder implements Function { + @Override + public Metadata apply(ServiceRegistry registry) { + return new MetadataSources(registry) + .addAnnotatedClasses(Location.class) + .buildMetadata(); + } +} diff --git a/examples/maven_project_spring_example/src/main/java/com/example/minimodel/Location.java b/examples/maven_project_spring_example/src/main/java/com/example/minimodel/Location.java new file mode 100644 index 0000000..1f935d1 --- /dev/null +++ b/examples/maven_project_spring_example/src/main/java/com/example/minimodel/Location.java @@ -0,0 +1,31 @@ +package com.example.minimodel; + +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; + +@Entity +public class Location { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + public Long id; + + public String title = "hello"; + + public void setId(Long id) { + this.id = id; + } + + public Long getId() { + return id; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } +} diff --git a/examples/maven_project_spring_example/src/main/java/com/example/model/Department.java b/examples/maven_project_spring_example/src/main/java/com/example/model/Department.java new file mode 100644 index 0000000..cabc011 --- /dev/null +++ b/examples/maven_project_spring_example/src/main/java/com/example/model/Department.java @@ -0,0 +1,39 @@ +package com.example.model; + +import jakarta.persistence.CascadeType; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.OneToMany; +import jakarta.persistence.Table; + +import java.util.ArrayList; +import java.util.List; + +@Entity +@Table +public class Department { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + + private String name; + + @OneToMany(mappedBy="department",cascade= CascadeType.PERSIST) + private List employees = new ArrayList(); + + public Department() { + super(); + } + + public Department(String name) { + this.name = name; + } + + public String getName() { + return name; + } +} \ No newline at end of file diff --git a/examples/maven_project_spring_example/src/main/java/com/example/model/Employee.java b/examples/maven_project_spring_example/src/main/java/com/example/model/Employee.java new file mode 100644 index 0000000..923a2aa --- /dev/null +++ b/examples/maven_project_spring_example/src/main/java/com/example/model/Employee.java @@ -0,0 +1,46 @@ +package com.example.model; + +import jakarta.persistence.*; + +@Entity +public class Employee { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + private String name; + + @ManyToOne + private Department department; + public Employee() {} + public Employee(String name, Department department) { + this.name = name; + this.department = department; + } + + public Employee(String name) { + this.name = name; + } + public Long getId() { + return id; + } + public void setId(Long id) { + this.id = id; + } + public String getName() { + return name; + } + public void setName(String name) { + this.name = name; + } + public Department getDepartment() { + return department; + } + public void setDepartment(Department department) { + this.department = department; + } + @Override + public String toString() { + return "Employee [id=" + id + ", name=" + name + ", department=" + + department.getName() + "]"; + } +} \ No newline at end of file diff --git a/examples/maven_project_spring_example/src/main/resources/log4j.properties b/examples/maven_project_spring_example/src/main/resources/log4j.properties new file mode 100644 index 0000000..8520d48 --- /dev/null +++ b/examples/maven_project_spring_example/src/main/resources/log4j.properties @@ -0,0 +1 @@ +log4j.rootLogger=OFF diff --git a/examples/maven_project_spring_example/src/main/resources/schema-export.properties b/examples/maven_project_spring_example/src/main/resources/schema-export.properties new file mode 100644 index 0000000..ad6214b --- /dev/null +++ b/examples/maven_project_spring_example/src/main/resources/schema-export.properties @@ -0,0 +1,6 @@ +spring.jpa.properties.jakarta.persistence.database-product-name=PostgreSQL +spring.jpa.properties.jakarta.persistence.database-major-version=15 +spring.jpa.properties.jakarta.persistence.schema-generation.database.action=create +spring.datasource.type=org.springframework.jdbc.datasource.SimpleDriverDataSource +spring.jpa.properties.hibernate.schema_management_tool=io.atlasgo.ConsoleSchemaManagementTool +spring.jpa.properties.hibernate.dialect=PostgreSQL diff --git a/examples/with_local_plugin_repository/migrations/20231210140844.sql b/examples/with_local_plugin_repository/migrations/20231210140844.sql new file mode 100644 index 0000000..ad80a64 --- /dev/null +++ b/examples/with_local_plugin_repository/migrations/20231210140844.sql @@ -0,0 +1,6 @@ +-- Create "Event" table +CREATE TABLE `Event` (`id` bigint NOT NULL AUTO_INCREMENT, `title` varchar(255) NULL, PRIMARY KEY (`id`)) CHARSET utf8mb4 COLLATE utf8mb4_0900_ai_ci; +-- Create "Event2" table +CREATE TABLE `Event2` (`id` bigint NOT NULL, `title` varchar(255) NULL, PRIMARY KEY (`id`)) CHARSET utf8mb4 COLLATE utf8mb4_0900_ai_ci; +-- Create "Location" table +CREATE TABLE `Location` (`id` bigint NOT NULL AUTO_INCREMENT, PRIMARY KEY (`id`)) CHARSET utf8mb4 COLLATE utf8mb4_0900_ai_ci; diff --git a/examples/with_local_plugin_repository/migrations/atlas.sum b/examples/with_local_plugin_repository/migrations/atlas.sum new file mode 100644 index 0000000..3f810dc --- /dev/null +++ b/examples/with_local_plugin_repository/migrations/atlas.sum @@ -0,0 +1,2 @@ +h1:eD9l/LmtgK2RAX8MWH/DWsy4/qGvlVL3FEd4lcNpC0U= +20231210140844.sql h1:Az9/7wbbavZ5Kgs+/yRcy+5MDYorgx/zd0s6DZQXvLg=