Compare commits

...
2 Commits
Author SHA1 Message Date
Matheus 655e67a0f9 atual
davinTI/jogos_matheus/pipeline/head There was a failure building this commit
2026-09-25 10:39:38 -03:00
Matheus 461a573145 fix: update search field ID and improve SQL query for game search in cadastro_jogos desktop XML 2026-09-25 09:17:38 -03:00
2 changed files with 447 additions and 318 deletions
+104 -65
View File
@@ -1,10 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<panel-form xmlns="http://www.davinti.com.br/vitruvio/form/panel"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.davinti.com.br/vitruvio/form/panel https://bitbucket.org/davinTI/vitruvio-xds/raw/master/vitruvio-panel-form.xsd">
<form formKey="formCadastroJogos" width="100%" height="100%">
<name>Cadastro de jogos</name>
<description>Painel para cadastro de jogos</description>
<panel-form xmlns="http://www.davinti.com.br/vitruvio/form/panel" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.davinti.com.br/vitruvio/form/panel https://bitbucket.org/davinTI/vitruvio-xds/raw/master/vitruvio-panel-form.xsd">
<form width="100%" height="100%" formKey="formTeste">
<description></description>
<initScript language="JavaScript"> <initScript language="JavaScript">
<![CDATA[ <![CDATA[
var lib_cadastro_padrao = libService.loadScript("lib_cadastro_padrao"); var lib_cadastro_padrao = libService.loadScript("lib_cadastro_padrao");
var config_jogos = { var config_jogos = {
@@ -149,7 +153,7 @@
lib_msg.showNotification({ lib_msg.showNotification({
type: lib_msg.notificationType.tray, type: lib_msg.notificationType.tray,
caption: "Erro!", caption: "Erro!",
msg: "Selecione um jogo para ver as avaliações", msg: "Selecione um jogo para ver as avaliações.",
position: lib_msg.notificationPosition.bottom_right, position: lib_msg.notificationPosition.bottom_right,
}); });
return; return;
@@ -169,8 +173,8 @@
engine.setGlobalVariable("resetPanelGames", resetPanelGames); engine.setGlobalVariable("resetPanelGames", resetPanelGames);
} }
]]> ]]>
</initScript> </initScript>
<components> <components>
<VerticalLayout width="100%" height="100%" align="MIDDLE_RIGHT"> <VerticalLayout width="100%" height="100%" align="MIDDLE_RIGHT">
@@ -210,7 +214,7 @@
if(engine.isValid()){ if(engine.isValid()){
engine.getField("txfCodigoJogo").setValue(engine.getField("dbtJogos").getValue()); engine.getField("txfCodigo").setValue(engine.getField("dbtJogos").getValue());
var config_avaliacoes = engine.getGlobalVariable("config_avaliacoes"); var config_avaliacoes = engine.getGlobalVariable("config_avaliacoes");
var lib = libService.loadScript("lib_cadastro_padrao"); var lib = libService.loadScript("lib_cadastro_padrao");
var id = engine.getField("txfCodigoAvaliacao").getValue(); var id = engine.getField("txfCodigoAvaliacao").getValue();
@@ -240,18 +244,22 @@
</VerticalLayout> </VerticalLayout>
</WindowLayout> </WindowLayout>
<WindowLayout id="wltListaAvaliacoes" windowModal="true" windowHeight="80%" <WindowLayout id="wltListaAvaliacoes" windowModal="true" windowHeight="80%"
windowWidth="80%"> windowWidth="80%">
<VerticalLayout spacing="true" margin="true" height="100%"> <VerticalLayout spacing="true" margin="true" height="100%">
<Label id="lblTitle"><value>Avaliações</value></Label> <Label id="lblTitle">
<value>Avaliações</value>
</Label>
<DBTable id="dbtAvaliacoes" type="string" width="100%" <DBTable id="dbtAvaliacoes" type="string" width="100%"
gridSelectable="true" selectable="true" height="100%" gridSelectable="true" selectable="false" height="100%"
expandRatio="0.2" showRowCount="true"> expandRatio="0.2" showRowCount="true">
<datasource> <datasource>
<sqlBuilderDataSource connection-key="vitruvio" language="JavaScript"> <sqlBuilderDataSource connection-key="vitruvio"
language="JavaScript">
<![CDATA[ <![CDATA[
function buildSQL(_){ function buildSQL(_){
var txfPesquisa = engine.getField("txfPesquisaJogo").getValue();
var sqlBase = "SELECT * FROM TB_MATHEUS_MEDEIROS_AVALIACOES ORDER BY CODIGO"; var sqlBase = "SELECT * FROM TB_MATHEUS_MEDEIROS_AVALIACOES ORDER BY CODIGO";
var id_jogo = engine.getField("dbtJogos").getValue(); var id_jogo = engine.getField("dbtJogos").getValue();
if(id_jogo != null){ if(id_jogo != null){
@@ -264,12 +272,14 @@
</datasource> </datasource>
<key-field>CODIGO</key-field> <key-field>CODIGO</key-field>
<columns> <columns>
<column name="CODIGO" caption="ID" /> <column name="CODIGO" caption="ID" />
<column name="NOME" caption="NOME" /> <column name="NOME" caption="NOME" />
<column name="EMAIL" caption="E-MAIL" /> <column name="EMAIL" caption="E-MAIL" />
<column name="COMENTARIO" caption="COMENTÁRIO" /> <column name="COMENTARIO" caption="COMENTÁRIO" />
<column name="NOTA" caption="NOTA" /> <column name="NOTA" caption="NOTA" />
<column name="DATA_AVALIACAO" caption="DATA DE AVALIAÇÃO" /> <column name="DATA_AVALIACAO" caption="DATA DE AVALIAÇÃO" />
<generated name="EDITAR" caption="EDITAR" align="CENTER"> <generated name="EDITAR" caption="EDITAR" align="CENTER">
<scriptColumnGenerator language="JavaScript"> <scriptColumnGenerator language="JavaScript">
<![CDATA[ <![CDATA[
@@ -336,21 +346,28 @@
</columns> </columns>
</DBTable> </DBTable>
<HorizontalLayout spacing="true" align="MIDDLE_RIGHT"> <HorizontalLayout spacing="true" align="MIDDLE_RIGHT">
<ButtonWidget id="btnVoltarAvaliacoes" style="BLACK" caption="Voltar" defaultIcon="BACK"> <ButtonWidget id="btnVoltarAvaliacoes" style="BLACK" caption="Voltar"
<onClickScript language="JavaScript"><![CDATA[ width="20%" align="MIDDLE_RIGHT" defaultIcon="BACK">
<onClickScript language="JavaScript">
<![CDATA[
function run() { function run() {
engine.getLayout("wltListaAvaliacoes").closeWindow(); engine.getLayout("wltListaAvaliacoes").closeWindow();
} }
]]></onClickScript> ]]>
</onClickScript>
</ButtonWidget> </ButtonWidget>
<ButtonWidget id="btnAdicionarAvaliacoes" style="GREEN" caption="Nova Avaliação" defaultIcon="ADD"> <ButtonWidget id="btnAdicionarAvaliacoes" style="GREEN"
<onClickScript language="JavaScript"><![CDATA[ caption="Nova Avaliação"
width="20%" align="MIDDLE_RIGHT" defaultIcon="ADD">
<onClickScript language="JavaScript">
<![CDATA[
function run (){ function run (){
engine.getGlobalVariable("resetPanelReviews")(); engine.getGlobalVariable("resetPanelReviews")();
engine.getLayout("wltCriarAvaliacoes").showWindow(); engine.getLayout("wltCriarAvaliacoes").showWindow();
engine.getLayout("wltListaAvaliacoes").closeWindow(); engine.getLayout("wltListaAvaliacoes").closeWindow();
} }
]]></onClickScript> ]]>
</onClickScript>
</ButtonWidget> </ButtonWidget>
</HorizontalLayout> </HorizontalLayout>
</VerticalLayout> </VerticalLayout>
@@ -358,17 +375,18 @@
<CrudPanel id="pnlListaJogos" width="100%" height="100%" visible="true"> <CrudPanel id="pnlListaJogos" width="100%" height="100%" visible="true">
<Header backgroundColor="ORANGE"> <Header backgroundColor="ORANGE">
<Caption>Cadastro de Jogos</Caption> <Caption>Avaliações dos jogos</Caption>
<SubCaption>Cadastro de jogos</SubCaption> <SubCaption>Os melhores jogos já feitos</SubCaption>
</Header> </Header>
<Section height="100%" caption="Jogos" subCaption="Veja todos os jogos" <Section height="100%" caption="Jogos" subCaption="Veja todos os jogos"
id="secDadosJogo"> id="secDadosJogo">
<VerticalLayout width="100%" height="100%" align="MIDDLE_CENTER" <VerticalLayout width="100%" height="100%" align="MIDDLE_CENTER"
spacing="true"> spacing="true">
<HorizontalLayout width="100%" spacing="true"> <HorizontalLayout width="100%" spacing="true">
<TextField expandRatio="0.8" width="100%" id="txfPesquisa" <TextField expandRatio="0.8" width="100%" id="txfPesquisaJogo"
caption="Pesquise pelo nome do jogo" type="string" caption="Pesquise pelo nome do jogo" type="string"
immediate="true"> immediate="true">
<events> <events>
<valueChange> <valueChange>
<script language="JavaScript"> <script language="JavaScript">
@@ -381,23 +399,26 @@
</valueChange> </valueChange>
</events> </events>
</TextField> </TextField>
<ButtonWidget id="btnPesquisar" caption="Pesquisar" defaultIcon="SEARCH" style="BLACK"> <ButtonWidget defaultIcon="SEARCH" id="btnPesquisar"
caption="Pesquisar" style="BLACK">
<onClickScript language="JavaScript"> <onClickScript language="JavaScript">
<![CDATA[ <![CDATA[
function run() { function run() {
engine.getField("dbtJogos").refresh(); engine.getField("dbtJogos").refresh();
} }
]]> ]]>
</onClickScript> </onClickScript>
</ButtonWidget> </ButtonWidget>
</HorizontalLayout> </HorizontalLayout>
<DBTable id="dbtJogos" align="MIDDLE_CENTER" width="100%" height="100%" type="string" expandRatio="0.5" showRowCount="true" drawRefreshButton="true" gridSelectable="true" selectable="true"> <DBTable id="dbtJogos" align="MIDDLE_CENTER" type="string" width="100%"
gridSelectable="true" height="100%"
expandRatio="0.5" showRowCount="true" drawRefreshButton="true">
<datasource> <datasource>
<sqlBuilderDataSource connection-key="vitruvio" language="JavaScript"> <sqlBuilderDataSource connection-key="vitruvio"
language="JavaScript">
<![CDATA[ <![CDATA[
function buildSQL(_){ function buildSQL(_){
var txfPesquisa = engine.getField("txfPesquisa").getValue(); var txfPesquisa = engine.getField("txfPesquisaJogo").getValue();
var sqlBase = "SELECT J.CODIGO, J.TITULO, J.GENERO, J.ANO_LANCAMENTO, J.PRODUTORA, COALESCE(ROUND(AVG(A.NOTA), 2), 0) AS NOTA_MEDIA, J.DESCRICAO FROM TB_MATHEUS_MEDEIROS_JOGOS J LEFT JOIN TB_MATHEUS_MEDEIROS_AVALIACOES A ON J.CODIGO = A.ID_JOGO"; var sqlBase = "SELECT J.CODIGO, J.TITULO, J.GENERO, J.ANO_LANCAMENTO, J.PRODUTORA, COALESCE(ROUND(AVG(A.NOTA), 2), 0) AS NOTA_MEDIA, J.DESCRICAO FROM TB_MATHEUS_MEDEIROS_JOGOS J LEFT JOIN TB_MATHEUS_MEDEIROS_AVALIACOES A ON J.CODIGO = A.ID_JOGO";
@@ -413,9 +434,7 @@
]]> ]]>
</sqlBuilderDataSource> </sqlBuilderDataSource>
</datasource> </datasource>
<key-field> <key-field>CODIGO</key-field>
CODIGO
</key-field>
<columns> <columns>
<column name="CODIGO" caption="ID" /> <column name="CODIGO" caption="ID" />
<column name="TITULO" caption="TÍTULO" /> <column name="TITULO" caption="TÍTULO" />
@@ -424,7 +443,8 @@
<column name="PRODUTORA" caption="PRODUTORA" /> <column name="PRODUTORA" caption="PRODUTORA" />
<column name="NOTA_MEDIA" caption="NOTA MÉDIA" /> <column name="NOTA_MEDIA" caption="NOTA MÉDIA" />
<column name="DESCRICAO" caption="DESCRIÇÃO" /> <column name="DESCRICAO" caption="DESCRIÇÃO" />
<generated name="AVALIACOES" caption="AVALIAÇÕES" align="CENTER">
<generated name="AVALIACOES" caption="AVALIACOES" align="CENTER">
<scriptColumnGenerator language="JavaScript"> <scriptColumnGenerator language="JavaScript">
<![CDATA[ <![CDATA[
function Generator() { function Generator() {
@@ -436,6 +456,7 @@
var idJogoSelecionado = engine.getField("dbtJogos").getValue(); var idJogoSelecionado = engine.getField("dbtJogos").getValue();
engine.getGlobalVariable("showTableReviews")(itemId); engine.getGlobalVariable("showTableReviews")(itemId);
}, "star"); }, "star");
return btn; return btn;
} }
} }
@@ -452,13 +473,15 @@
var btn = comp.buttonIcon("Editar", function () { var btn = comp.buttonIcon("Editar", function () {
var id = itemId; var id = itemId;
engine.getField("txfCodigo").setValue(id); engine.getField("txfCodigo").setValue(id);
if (id != null) { if (id != null) {
engine.getGlobalVariable("changeCrudPanel")("cadastroJogo"); engine.getGlobalVariable("changeCrudPanel")("cadastroJogo");
var config_jogos = engine.getGlobalVariable('config_jogos'); var config_jogos = engine.getGlobalVariable('config_jogos');
var lib = libService.loadScript('lib_cadastro_padrao'); var lib = libService.loadScript('lib_cadastro_padrao');
lib.fncCarregarCampos(config_jogos, id); var sql = lib.fncCarregarCampos(config_jogos, id);
} }
}, "pencil"); }, "pencil");
return btn; return btn;
} }
} }
@@ -507,7 +530,8 @@
</columns> </columns>
</DBTable> </DBTable>
<HorizontalLayout align="MIDDLE_RIGHT" spacing="true"> <HorizontalLayout align="MIDDLE_RIGHT" spacing="true">
<ButtonWidget id="btnNovoJogo" caption="Novo Jogo" defaultIcon="ADD" style="GREEN"> <ButtonWidget defaultIcon="ADD" id="btnAdicionarJogo" style="GREEN"
caption="Novo">
<onClickScript language="JavaScript"> <onClickScript language="JavaScript">
<![CDATA[ <![CDATA[
function run (){ function run (){
@@ -516,7 +540,8 @@
]]> ]]>
</onClickScript> </onClickScript>
</ButtonWidget> </ButtonWidget>
<ButtonWidget id="btnVerAvaliacoes" caption="Ver Avaliações" defaultIcon="STAR" style="BLUE"> <ButtonWidget defaultIcon="SAVE" id="btnVerAvaliacoes" style="RED"
caption="Avaliações">
<onClickScript language="JavaScript"> <onClickScript language="JavaScript">
<![CDATA[ <![CDATA[
function run (){ function run (){
@@ -531,28 +556,39 @@
</VerticalLayout> </VerticalLayout>
</Section> </Section>
</CrudPanel> </CrudPanel>
<CrudPanel id="pnlCadastroJogo" width="100%" height="100%" visible="false"> <CrudPanel id="pnlCadastroJogo" width="100%" height="100%" visible="false">
<Header> <Header backgroundColor="ORANGE">
<Caption> Cadastro de um novo jogo</Caption> <Caption>Cadastro de jogos</Caption>
<SubCaption>Cadastro de jogo</SubCaption> <SubCaption>Dados para cadastro de jogos</SubCaption>
</Header> </Header>
<Section caption="Cadastro de novo Jogo" subCaption="Insira os dados do jogo" width="100%" height="100%" > <Section caption="Novo jogo" subCaption="Informe os dados abaixo" width="100%">
<VerticalLayout width="100%" height="100%" align="MIDDLE_CENTER" spacing="true">
<Panel id="pnlDadosJogo" width="100%" height="100%" margin="true" > <VerticalLayout width="100%" height="100%" align="MIDDLE_CENTER"
spacing="true">
<Panel id="pnlDadosJogos" width="100%" height="100%" caption="Dados do Jogo" margin="true">
<VerticalLayout caption="Dados do Jogo" width="100%" spacing="true"> <VerticalLayout caption="Dados do Jogo" width="100%" spacing="true">
<TextField id="txfCodigo" caption="Código" type="number" width="100%" enabled="false" visible="false"/>
<NumericField id="txfNotaMedia" caption="Nota Média" type="number" width="100%" enabled="false" visible="false"/> <TextField id="txfCodigo" caption="Código" type="number"
<TextField id="txfTitulo" caption="Título" type="string" width="100%" required="true" minLength="3"/> width="100%" enabled="false" visible="false" />
<ComboBox id="cbbGenero" type="string" caption="Gênero" updatable="false" allowNullSelection="true" width="100%" required="true"> <NumericField id="txfNotaMedia" caption="Nota média"
<entry key="ACAO" value="Ação"/> type="number"
<entry key="AVENTURA" value="Aventura"/> width="100%" enabled="false" visible="false" />
<entry key="RPG" value="RPG"/> <TextField id="txfTitulo" caption="Título" type="string"
<entry key="ESPORTES" value="Esportes"/> width="100%"
<entry key="ESTRATEGIA" value="Estratégia"/> required="true" minLength="3" maxLength="100" />
<entry key="CORRIDA" value="Corrida"/> <ComboBox id="cbbGenero" allowNullSelection="true"
<entry key="Sobrevivencia" value="Sobrevivência"/> caption="Gênero" description="ComboBox Exemplo"
updatable="false" required="true"
visible="true" type="string" width="100%">
<entry value="Ação" key="Ação" />
<entry value="Aventura" key="Aventura" />
<entry value="Terror" key="Terror" />
<entry value="Sobrevivência" key="Sobrevivência" />
<entry value="Infântil" key="Infântil" />
</ComboBox> </ComboBox>
<TextField id="txfAnoLancamento" caption="Ano de Lançamento" type="number" width="100%" required="true"> <TextField id="txfAnoLancamento" caption="Ano de Lançamento"
type="number" width="100%" required="true" maxLength="4">
<validation> <validation>
<script language="JavaScript"> <script language="JavaScript">
<![CDATA[ <![CDATA[
@@ -580,21 +616,15 @@
</script> </script>
</validation> </validation>
</TextField> </TextField>
<TextField id="txfProdutora" caption="Produtora" type="string" width="100%" required="true" maxLength="50"/> <TextField id="txfProdutora" caption="Produtora" type="string"
<TextArea id="txaDescricao" caption="Descrição" type="string" width="100%" maxLength="500"/> width="100%" required="true" maxLength="50" />
<TextArea id="txaDescricao" caption="Descrição do Jogo"
type="string" width="100%" height="" maxLength="500" />
</VerticalLayout> </VerticalLayout>
</Panel> </Panel>
<HorizontalLayout align="MIDDLE_RIGHT" spacing="true"> <HorizontalLayout align="MIDDLE_RIGHT" spacing="true">
<ButtonWidget id="btnVoltar" caption="Voltar" defaultIcon="BACK" style="BLACK"> <ButtonWidget id="btnLimpar" caption="Limpar" defaultIcon="REFRESH"
<onClickScript language="JavaScript"> style="ORANGE">
<![CDATA[
function run() {
engine.getGlobalVariable("changeCrudPanel")("listaJogos");
}
]]>
</onClickScript>
</ButtonWidget>
<ButtonWidget id="btnLimpar" caption="Limpar" defaultIcon="REMOVE" style="BLUE">
<onClickScript language="JavaScript"> <onClickScript language="JavaScript">
<![CDATA[ <![CDATA[
function run(){ function run(){
@@ -605,7 +635,8 @@
]]> ]]>
</onClickScript> </onClickScript>
</ButtonWidget> </ButtonWidget>
<ButtonWidget id="btnSalvarJogo" caption="Salvar" defaultIcon="SAVE" style="GREEN"> <ButtonWidget id="btnSalvar" caption="Salvar" defaultIcon="SAVE"
style="BLUE">
<onClickScript language="JavaScript"> <onClickScript language="JavaScript">
<![CDATA[ <![CDATA[
function run() { function run() {
@@ -623,7 +654,7 @@
lib_msg.showNotification({ lib_msg.showNotification({
type: lib_msg.notificationType.tray, type: lib_msg.notificationType.tray,
caption: "Sucesso!", caption: "Sucesso!",
msg: "O jogo foi gravado com sucesso!", msg: "O jogo foi gravado com sucesso",
position: lib_msg.notificationPosition.bottom_right, position: lib_msg.notificationPosition.bottom_right,
}); });
} }
@@ -632,13 +663,21 @@
]]> ]]>
</onClickScript> </onClickScript>
</ButtonWidget> </ButtonWidget>
<ButtonWidget id="btnVoltar" caption="Voltar" defaultIcon="BACK"
style="BLACK">
<onClickScript language="JavaScript">
<![CDATA[
function run() {
engine.getGlobalVariable("changeCrudPanel")("listaJogos");
}
]]>
</onClickScript>
</ButtonWidget>
</HorizontalLayout> </HorizontalLayout>
</VerticalLayout> </VerticalLayout>
</Section> </Section>
</CrudPanel> </CrudPanel>
</VerticalLayout> </VerticalLayout>
</components> </components>
</form> </form>
</panel-form> </panel-form>
+150 -60
View File
@@ -1,79 +1,169 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" <databaseChangeLog
xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext" xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd xsi:schemaLocation="
http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd"> http://www.liquibase.org/xml/ns/dbchangelog-ext
http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd
http://www.liquibase.org/xml/ns/dbchangelog
http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd">
<changeSet author="matheus.medeiros" id="matheus.medeiros-drop">
<sql>
DROP TABLE IF EXISTS TB_MATHEUS_MEDEIROS_AVALIACOES;
DROP TABLE IF EXISTS TB_MATHEUS_MEDEIROS_JOGOS;
</sql>
</changeSet>
<changeSet author="matheus.medeiros" id="matheus.medeiros-drop-sequences">
<sql>
DROP SEQUENCE IF EXISTS TB_MATHEUS_MEDEIROS_AVALIACOES_SEQ;
DROP SEQUENCE IF EXISTS TB_MATHEUS_MEDEIROS_JOGOS_SEQ;
</sql>
</changeSet>
<changeSet author="matheus.medeiros" id="matheus.medeiros-1"> <changeSet author="matheus.medeiros" id="matheus.medeiros-1">
<preConditions onError="WARN" onFail="MARK_RAN" onSqlOutput="IGNORE">
<not>
<tableExists tableName="TB_MATHEUS_MEDEIROS_JOGOS" />
</not>
</preConditions>
<sql endDelimiter=";" splitStatements="true" stripComments="false">CREATE TABLE TB_MATHEUS_MEDEIROS_JOGOS ( <sql>
CODIGO NUMERIC(10) NOT NULL, CREATE SEQUENCE TB_MATHEUS_MEDEIROS_JOGOS_SEQ
TITULO VARCHAR(150) NOT NULL, START WITH 1
GENERO VARCHAR(30) NOT NULL, INCREMENT BY 1
ANO_LANCAMENTO NUMERIC(4) NOT NULL, CACHE 1
PRODUTORA VARCHAR(50) NOT NULL, NO CYCLE;
DESCRICAO VARCHAR(500) NOT NULL,
CONSTRAINT PK_MM_JOGOS PRIMARY KEY (CODIGO),
CONSTRAINT CK_MM_JOGOS_ANO
CHECK (ANO_LANCAMENTO BETWEEN 1970 AND EXTRACT(YEAR FROM CURRENT_DATE)),
CONSTRAINT CK_MM_JOGOS_TITULO
CHECK (LENGTH(TITULO) BETWEEN 3 AND 100)
);
</sql> </sql>
</changeSet> </changeSet>
<changeSet author="matheus.medeiros" id="matheus.medeiros-2"> <changeSet author="matheus.medeiros" id="matheus.medeiros-2">
<preConditions onError="WARN" onFail="MARK_RAN" onSqlOutput="IGNORE">
<not>
<sequenceExists sequenceName="TB_MATHEUS_MEDEIROS_JOGOS_SEQ" />
</not>
</preConditions>
<sql endDelimiter=";" splitStatements="true" stripComments="false">
CREATE SEQUENCE TB_MATHEUS_MEDEIROS_JOGOS_SEQ
START WITH 1 INCREMENT BY 1 CACHE 1 NO CYCLE;
</sql>
</changeSet>
<changeSet author="matheus.medeiros" id="matheus.medeiros-4"> <sql>
<preConditions onError="WARN" onFail="MARK_RAN" onSqlOutput="IGNORE"> CREATE TABLE TB_MATHEUS_MEDEIROS_JOGOS (
<not>
<tableExists tableName="TB_MATHEUS_MEDEIROS_AVALIACOES" /> CODIGO
</not> NUMERIC(10)
</preConditions> DEFAULT NEXTVAL('TB_MATHEUS_MEDEIROS_JOGOS_SEQ')
<sql endDelimiter=";" splitStatements="true" stripComments="false"> NOT NULL,
CREATE TABLE TB_MATHEUS_MEDEIROS_AVALIACOES (
CODIGO NUMERIC(10) NOT NULL, TITULO
NOME VARCHAR(100) NOT NULL, VARCHAR(100)
EMAIL VARCHAR(150) NOT NULL, NOT NULL,
COMENTARIO VARCHAR(1000) NOT NULL,
NOTA NUMERIC(4,2) NOT NULL, GENERO
DATA_AVALIACAO DATE DEFAULT CURRENT_DATE NOT NULL, VARCHAR(30)
ID_JOGO NUMERIC(10) NOT NULL, NOT NULL,
CONSTRAINT PK_MM_AVALIACOES PRIMARY KEY (CODIGO),
CONSTRAINT FK_MM_AVAL_JOGO ANO_LANCAMENTO
FOREIGN KEY (ID_JOGO) NUMERIC(4)
REFERENCES TB_MATHEUS_MEDEIROS_JOGOS (CODIGO), NOT NULL,
CONSTRAINT CK_MM_AVAL_NOTA
CHECK (NOTA BETWEEN 0 AND 10) PRODUTORA
);</sql> VARCHAR(50)
NOT NULL,
NOTA_MEDIA
NUMERIC(3,1),
DESCRICAO
VARCHAR(500),
CONSTRAINT PK_MM_JOGOS
PRIMARY KEY (CODIGO),
CONSTRAINT CK_MM_JOGOS_TITULO
CHECK (LENGTH(TITULO) BETWEEN 3 AND 100),
CONSTRAINT CK_MM_JOGOS_ANO
CHECK (
ANO_LANCAMENTO BETWEEN 1970
AND EXTRACT(YEAR FROM CURRENT_DATE)
),
CONSTRAINT CK_MM_JOGOS_NOTA_MEDIA
CHECK (
NOTA_MEDIA IS NULL
OR NOTA_MEDIA BETWEEN 0 AND 10
)
);
</sql>
</changeSet> </changeSet>
<changeSet author="matheus.medeiros" id="matheus.medeiros-3"> <changeSet author="matheus.medeiros" id="matheus.medeiros-3">
<preConditions onError="WARN" onFail="MARK_RAN" onSqlOutput="IGNORE">
<not> <sql>
<sequenceExists sequenceName="TB_MATHEUS_MEDEIROS_AVALIACOES_SEQ" />
</not>
</preConditions>
<sql endDelimiter=";" splitStatements="true" stripComments="false">
CREATE SEQUENCE TB_MATHEUS_MEDEIROS_AVALIACOES_SEQ CREATE SEQUENCE TB_MATHEUS_MEDEIROS_AVALIACOES_SEQ
START WITH 1 INCREMENT BY 1 CACHE 1 NO CYCLE; START WITH 1
INCREMENT BY 1
CACHE 1
NO CYCLE;
</sql> </sql>
</changeSet>
<changeSet author="matheus.medeiros" id="matheus.medeiros-4">
<sql>
CREATE TABLE TB_MATHEUS_MEDEIROS_AVALIACOES (
CODIGO
NUMERIC(10)
DEFAULT NEXTVAL('TB_MATHEUS_MEDEIROS_AVALIACOES_SEQ')
NOT NULL,
NOME
VARCHAR(100)
NOT NULL,
EMAIL
VARCHAR(150)
NOT NULL,
COMENTARIO
VARCHAR(300),
NOTA
NUMERIC(3,1),
DATA_AVALIACAO
TIMESTAMP
DEFAULT CURRENT_TIMESTAMP
NOT NULL,
ID_JOGO
NUMERIC(10)
NOT NULL,
CONSTRAINT PK_MM_AVALIACOES
PRIMARY KEY (CODIGO),
CONSTRAINT UK_MM_AVAL_EMAIL_JOGO
UNIQUE (EMAIL, ID_JOGO),
CONSTRAINT FK_MM_AVAL_JOGO
FOREIGN KEY (ID_JOGO)
REFERENCES TB_MATHEUS_MEDEIROS_JOGOS (CODIGO),
CONSTRAINT CK_MM_AVAL_NOTA
CHECK (
NOTA IS NULL
OR NOTA BETWEEN 0 AND 10
)
);
</sql>
</changeSet> </changeSet>
</databaseChangeLog> </databaseChangeLog>