refactor: replace Spring Boot with Jooby framework
- Remove Spring Boot dependencies and annotations. - Implement Jooby MVC controllers and Guice dependency injection. - Migrate persistence layer to Ebean ORM. - Configure Flyway migrations and ApiErrorController. - Update application configuration to HOCON format.
This commit is contained in:
@@ -0,0 +1,168 @@
|
||||
create table personal
|
||||
(
|
||||
id bigint not null
|
||||
primary key,
|
||||
avatar varchar(255),
|
||||
bio varchar(255),
|
||||
email varchar(255),
|
||||
location varchar(255),
|
||||
name varchar(255),
|
||||
phone varchar(255),
|
||||
subtitle varchar(255),
|
||||
title varchar(255)
|
||||
);
|
||||
|
||||
create table personal_social_link
|
||||
(
|
||||
id bigint not null
|
||||
primary key,
|
||||
platform varchar(255),
|
||||
url varchar(255),
|
||||
personal_id bigint not null
|
||||
constraint fkfh1pbfvvg3palcr1yip6jffik
|
||||
references personal
|
||||
);
|
||||
|
||||
create table profile
|
||||
(
|
||||
id bigint not null
|
||||
primary key,
|
||||
avatar varchar(255),
|
||||
bio varchar(4000),
|
||||
email varchar(255),
|
||||
location varchar(255),
|
||||
name varchar(255),
|
||||
phone varchar(255),
|
||||
slug varchar(255),
|
||||
subtitle varchar(255),
|
||||
title varchar(255)
|
||||
);
|
||||
|
||||
create table certification
|
||||
(
|
||||
id bigint not null
|
||||
primary key,
|
||||
credential_id varchar(255),
|
||||
date varchar(255),
|
||||
issuer varchar(255),
|
||||
name varchar(255),
|
||||
profile_id bigint not null
|
||||
constraint fko6ve4ysx15lc2vcjt84sal1yc
|
||||
references profile
|
||||
);
|
||||
|
||||
create table education
|
||||
(
|
||||
id bigint not null
|
||||
primary key,
|
||||
degree varchar(255),
|
||||
description varchar,
|
||||
grade varchar(255),
|
||||
institution varchar(255),
|
||||
period varchar(255),
|
||||
profile_id bigint not null
|
||||
constraint fkelocxwwcyf5acj85hgke1c0fl
|
||||
references profile
|
||||
);
|
||||
|
||||
create table experience
|
||||
(
|
||||
id bigint not null
|
||||
primary key,
|
||||
company varchar(255),
|
||||
description varchar,
|
||||
location varchar(255),
|
||||
period varchar(255),
|
||||
position varchar(255),
|
||||
profile_id bigint not null
|
||||
constraint fkhlkosu9yvtv1ptp01x4tfh9ut
|
||||
references profile
|
||||
);
|
||||
|
||||
create table experience_achievement
|
||||
(
|
||||
id bigint not null
|
||||
primary key,
|
||||
description varchar,
|
||||
experience_id bigint
|
||||
constraint fk94xrk6stofkung8skwplo29nd
|
||||
references experience
|
||||
);
|
||||
|
||||
create table experience_skill
|
||||
(
|
||||
id bigint not null
|
||||
primary key,
|
||||
name varchar(255),
|
||||
experience_id bigint
|
||||
constraint fkpr3jdfjjlaubuayoafpwyx2al
|
||||
references experience
|
||||
);
|
||||
|
||||
create table profile_social_link
|
||||
(
|
||||
id bigint not null
|
||||
primary key,
|
||||
platform varchar(255),
|
||||
url varchar(255),
|
||||
profile_id bigint not null
|
||||
constraint fkqfxt1g0xm211i7qjnlcuqfes9
|
||||
references profile
|
||||
);
|
||||
|
||||
create table project
|
||||
(
|
||||
id bigint not null
|
||||
primary key,
|
||||
demo varchar(255),
|
||||
description varchar(255),
|
||||
image varchar(255),
|
||||
repository varchar(255),
|
||||
title varchar(255),
|
||||
profile_id bigint not null
|
||||
constraint fk2i9umkiuu36osx3afamsxq39h
|
||||
references profile
|
||||
);
|
||||
|
||||
create table project_feature
|
||||
(
|
||||
id bigint not null
|
||||
primary key,
|
||||
name varchar(255),
|
||||
project_id bigint
|
||||
constraint fkdifppyvrfito5in15ox4db0up
|
||||
references project
|
||||
);
|
||||
|
||||
create table project_feature_technology
|
||||
(
|
||||
id bigint not null
|
||||
primary key,
|
||||
name varchar(255),
|
||||
project_id bigint
|
||||
constraint fk15krsajtovetpg5vsaqj3icwf
|
||||
references project
|
||||
);
|
||||
|
||||
create table skill_group
|
||||
(
|
||||
id bigint not null
|
||||
primary key,
|
||||
icon varchar(255),
|
||||
name varchar(255),
|
||||
profile_id bigint not null
|
||||
constraint fko26hcvag49ctl3ciddsqm6mn1
|
||||
references profile
|
||||
);
|
||||
|
||||
create table skill
|
||||
(
|
||||
id bigint not null
|
||||
primary key,
|
||||
level integer,
|
||||
name varchar(255),
|
||||
years integer,
|
||||
skill_id bigint
|
||||
constraint fki819li5g5cp5qbsyenhr3kmef
|
||||
references skill_group
|
||||
);
|
||||
@@ -1,140 +0,0 @@
|
||||
create table certification
|
||||
(
|
||||
id bigint generated by default as identity,
|
||||
credential_id varchar(255),
|
||||
date varchar(255),
|
||||
issuer varchar(255),
|
||||
name varchar(255),
|
||||
primary key (id)
|
||||
);
|
||||
|
||||
create table education
|
||||
(
|
||||
id bigint generated by default as identity,
|
||||
degree varchar(255),
|
||||
description text,
|
||||
grade varchar(255),
|
||||
institution varchar(255),
|
||||
period varchar(255),
|
||||
primary key (id)
|
||||
);
|
||||
|
||||
create table experience
|
||||
(
|
||||
id bigint generated by default as identity,
|
||||
company varchar(255),
|
||||
description text,
|
||||
location varchar(255),
|
||||
period varchar(255),
|
||||
position varchar(255),
|
||||
primary key (id)
|
||||
);
|
||||
|
||||
create table experience_achievement
|
||||
(
|
||||
id bigint generated by default as identity,
|
||||
description text,
|
||||
experience_id bigint,
|
||||
primary key (id)
|
||||
);
|
||||
|
||||
create table experience_skill
|
||||
(
|
||||
id bigint generated by default as identity,
|
||||
name varchar(255),
|
||||
experience_id bigint,
|
||||
primary key (id)
|
||||
);
|
||||
|
||||
create table personal
|
||||
(
|
||||
id bigint generated by default as identity,
|
||||
avatar varchar(255),
|
||||
bio varchar(255),
|
||||
email varchar(255),
|
||||
location varchar(255),
|
||||
name varchar(255),
|
||||
phone varchar(255),
|
||||
subtitle varchar(255),
|
||||
title varchar(255),
|
||||
primary key (id)
|
||||
);
|
||||
|
||||
create table personal_social_link
|
||||
(
|
||||
id bigint generated by default as identity,
|
||||
platform varchar(255),
|
||||
url varchar(255),
|
||||
personal_id bigint not null,
|
||||
primary key (id)
|
||||
);
|
||||
|
||||
create table project
|
||||
(
|
||||
id bigint generated by default as identity,
|
||||
demo varchar(255),
|
||||
description varchar(255),
|
||||
image varchar(255),
|
||||
repository varchar(255),
|
||||
title varchar(255),
|
||||
primary key (id)
|
||||
);
|
||||
|
||||
create table project_feature
|
||||
(
|
||||
id bigint generated by default as identity,
|
||||
name varchar(255),
|
||||
project_id bigint,
|
||||
primary key (id)
|
||||
);
|
||||
|
||||
create table project_feature_technology
|
||||
(
|
||||
id bigint generated by default as identity,
|
||||
name varchar(255),
|
||||
project_id bigint,
|
||||
primary key (id)
|
||||
);
|
||||
|
||||
create table skill
|
||||
(
|
||||
id bigint generated by default as identity,
|
||||
level integer,
|
||||
name varchar(255),
|
||||
years integer,
|
||||
skill_id bigint,
|
||||
primary key (id)
|
||||
);
|
||||
|
||||
create table skill_group
|
||||
(
|
||||
id bigint generated by default as identity,
|
||||
icon varchar(255),
|
||||
name varchar(255),
|
||||
primary key (id)
|
||||
);
|
||||
|
||||
alter table if exists experience_achievement
|
||||
add constraint FK94xrk6stofkung8skwplo29nd
|
||||
foreign key (experience_id)
|
||||
references experience;
|
||||
|
||||
alter table if exists experience_skill
|
||||
add constraint FKpr3jdfjjlaubuayoafpwyx2al
|
||||
foreign key (experience_id)
|
||||
references experience;
|
||||
|
||||
alter table if exists project_feature
|
||||
add constraint FKdifppyvrfito5in15ox4db0up
|
||||
foreign key (project_id)
|
||||
references project;
|
||||
|
||||
alter table if exists project_feature_technology
|
||||
add constraint FK15krsajtovetpg5vsaqj3icwf
|
||||
foreign key (project_id)
|
||||
references project;
|
||||
|
||||
alter table if exists skill
|
||||
add constraint FKi819li5g5cp5qbsyenhr3kmef
|
||||
foreign key (skill_id)
|
||||
references skill_group;
|
||||
3
infrastructure/src/main/resources/ebean.mf
Normal file
3
infrastructure/src/main/resources/ebean.mf
Normal file
@@ -0,0 +1,3 @@
|
||||
entity-packages: com.pablotj.portfolio.infrastructure.persistence
|
||||
transactional-packages: com.pablotj.portfolio
|
||||
querybean-packages: com.pablotj.portfolio
|
||||
101
infrastructure/src/main/resources/log4j2.properties
Normal file
101
infrastructure/src/main/resources/log4j2.properties
Normal file
@@ -0,0 +1,101 @@
|
||||
# ========== Log4j2 Properties Configuration ==========
|
||||
status = warn
|
||||
name = JoobyPortfolioConfig
|
||||
|
||||
property.basePath = logs
|
||||
|
||||
# ========== Appenders ==========
|
||||
|
||||
# Console
|
||||
appender.console.type = Console
|
||||
appender.console.name = ConsoleAppender
|
||||
appender.console.layout.type = PatternLayout
|
||||
appender.console.layout.pattern = %d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n
|
||||
|
||||
# Rolling File INFO (DEBUG e INFO)
|
||||
appender.info.type = RollingFile
|
||||
appender.info.name = InfoFileAppender
|
||||
appender.info.fileName = ${basePath}/info.log
|
||||
appender.info.filePattern = ${basePath}/info-%d{yyyy-MM-dd}-%i.log.gz
|
||||
appender.info.layout.type = PatternLayout
|
||||
appender.info.layout.pattern = [%d{yyyy-MM-dd HH:mm:ss}] [%t] %-5level %logger{36} - %msg%n
|
||||
appender.info.policies.type = Policies
|
||||
appender.info.policies.time.type = TimeBasedTriggeringPolicy
|
||||
appender.info.policies.time.interval = 1
|
||||
appender.info.policies.size.type = SizeBasedTriggeringPolicy
|
||||
appender.info.policies.size.size = 10MB
|
||||
appender.info.filter.type = LevelRangeFilter
|
||||
appender.info.filter.levelMin = debug
|
||||
appender.info.filter.levelMax = info
|
||||
appender.info.filter.onMatch = ACCEPT
|
||||
appender.info.filter.onMismatch = DENY
|
||||
|
||||
# Rolling File ERROR (ERROR y FATAL)
|
||||
appender.error.type = RollingFile
|
||||
appender.error.name = ErrorFileAppender
|
||||
appender.error.fileName = ${basePath}/error.log
|
||||
appender.error.filePattern = ${basePath}/error-%d{yyyy-MM-dd}-%i.log.gz
|
||||
appender.error.layout.type = PatternLayout
|
||||
appender.error.layout.pattern = [%d{yyyy-MM-dd HH:mm:ss}] [%t] %-5level %logger{36} - %msg%n
|
||||
appender.error.policies.type = Policies
|
||||
appender.error.policies.time.type = TimeBasedTriggeringPolicy
|
||||
appender.error.policies.time.interval = 1
|
||||
appender.error.policies.size.type = SizeBasedTriggeringPolicy
|
||||
appender.error.policies.size.size = 10MB
|
||||
appender.error.filter.threshold.type = ThresholdFilter
|
||||
appender.error.filter.threshold.level = error
|
||||
appender.error.filter.threshold.onMatch = ACCEPT
|
||||
appender.error.filter.threshold.onMismatch = DENY
|
||||
|
||||
# Rolling File for Database logs (Ebean SQL)
|
||||
appender.db.type = RollingFile
|
||||
appender.db.name = DBFileAppender
|
||||
appender.db.fileName = ${basePath}/db.log
|
||||
appender.db.filePattern = ${basePath}/db-%d{yyyy-MM-dd}-%i.log.gz
|
||||
appender.db.layout.type = PatternLayout
|
||||
appender.db.layout.pattern = [%d{yyyy-MM-dd HH:mm:ss}] [%t] %-5level %logger{36} - %msg%n
|
||||
appender.db.policies.type = Policies
|
||||
appender.db.policies.time.type = TimeBasedTriggeringPolicy
|
||||
appender.db.policies.time.interval = 1
|
||||
appender.db.policies.size.type = SizeBasedTriggeringPolicy
|
||||
appender.db.policies.size.size = 10MB
|
||||
|
||||
# ========== Loggers ==========
|
||||
|
||||
# App logs (Tu paquete base)
|
||||
logger.app.name = com.pablotj
|
||||
logger.app.level = debug
|
||||
logger.app.additivity = false
|
||||
logger.app.appenderRefs = console, info, error
|
||||
logger.app.appenderRef.console.ref = ConsoleAppender
|
||||
logger.app.appenderRef.info.ref = InfoFileAppender
|
||||
logger.app.appenderRef.error.ref = ErrorFileAppender
|
||||
|
||||
# Ebean SQL (Sustituye a Hibernate SQL)
|
||||
# io.ebean.SQL muestra las sentencias ejecutadas
|
||||
logger.ebean.name = io.ebean.SQL
|
||||
logger.ebean.level = debug
|
||||
logger.ebean.additivity = false
|
||||
logger.ebean.appenderRefs = db
|
||||
logger.ebean.appenderRef.db.ref = DBFileAppender
|
||||
|
||||
# Ebean TX (Opcional: muestra transacciones)
|
||||
logger.ebean_tx.name = io.ebean.TX
|
||||
logger.ebean_tx.level = info
|
||||
logger.ebean_tx.additivity = false
|
||||
logger.ebean_tx.appenderRefs = db
|
||||
logger.ebean_tx.appenderRef.db.ref = DBFileAppender
|
||||
|
||||
# Jooby Framework logs
|
||||
logger.jooby.name = io.jooby
|
||||
logger.jooby.level = info
|
||||
logger.jooby.additivity = false
|
||||
logger.jooby.appenderRefs = console
|
||||
logger.jooby.appenderRef.console.ref = ConsoleAppender
|
||||
|
||||
# ========== Root Logger ==========
|
||||
rootLogger.level = info
|
||||
rootLogger.appenderRefs = console, info, error
|
||||
rootLogger.appenderRef.console.ref = ConsoleAppender
|
||||
rootLogger.appenderRef.info.ref = InfoFileAppender
|
||||
rootLogger.appenderRef.error.ref = ErrorFileAppender
|
||||
Reference in New Issue
Block a user