# Ejemplos

# Hola Mundo

Como cualquier otra libreria, vamos a comenzar con un ejemplo hola mundo. El primer paso es crear el proyecto:

{
  "name": "hello-es4x",
  "version": "1.0.0",
  "private": true,
  "main": "index.js",
  "dependencies": {
    "@vertx/core": "latest",
    "@es4x/create": "latest"
  },
  "scripts": {
    "postinstall": "es4x install",
    "start": "es4x"
  }
}

# Instala las dependencias necesarias

$ npm i

> [email protected] postinstall .../hello-world
> es4x install

npm notice created a lockfile as package-lock.json. You should commit this file.
added 2 packages from 1 contributor and audited 2 packages in 6.704s
found 0 vulnerabilities

WARNING

Si ves el mensaje Installing GraalJS..., significa que tu instalacion java en el sistema no es una instalacion GraalVM. Esto es totalmente OK porque se descargan paquetes adicionales para asegurar el mejor rendimiento.

WARNING

Si ves el mensaje Current JDK only supports GraalJS in Interpreted mode!, significa que tu instalacion java en la linea de comandos es menor que 11 o OpenJ9.

# Escribe tu codigo

Ahora que tu proyecto esta listo para ser usado, podemos escribir el codigo:

/// <reference types="@vertx/core" />
// @ts-check

console.log('Hello ES4X');

# Ejecutalo

$ npm start

> [email protected] start .../hello-world
> es4x

Hello ES4X
Succeeded in deploying verticle

WARNING

Si ves el mensaje Current JDK only supports GraalJS in Interpreted mode!, significa que tu instalacion java en la linea de comandos es menor que 11 o OpenJ9.

# Aplicacion Web

En este ejemplo vamos a creer una sencilla aplicacion web:

{
  "name": "web-application",
  "version": "0.0.1",
  "private": true,
  "main": "index.js",
  "dependencies": {
    "@vertx/core": "latest",
    "@vertx/web": "latest"
  },
  "devDependencies": {
    "@es4x/create": "latest"
  },
  "scripts": {
    "start": "es4x",
    "postinstall": "es4x install"
  }
}

# Instala las dependencias necesarias

$ npm i

> [email protected] postinstall .../hello-world
> es4x install

npm notice created a lockfile as package-lock.json. You should commit this file.
added 2 packages from 1 contributor and audited 2 packages in 6.704s
found 0 vulnerabilities

WARNING

Si ves el mensaje Installing GraalJS..., significa que tu instalacion java en el sistema no es una instalacion GraalVM. Esto es totalmente OK porque se descargan paquetes adicionales para asegurar el mejor rendimiento.

WARNING

Si ves el mensaje Current JDK only supports GraalJS in Interpreted mode!, significa que tu instalacion java en la linea de comandos es menor que 11 o OpenJ9.

# Escribe tu codigo

Ahora que tu proyecto esta listo para ser usado, podemos escribir el codigo:

/// <reference types="@vertx/core" />
// @ts-check

import {Router} from '@vertx/web';

const app = Router.router(vertx);

// serve a simple Hello, World! text message
app.get("/plaintext").handler(ctx => {
  ctx.response()
    .putHeader("Content-Type", "text/plain")
    .end('Hello, World!');
});

// serve a simple Hello, World! JSON message
app.get("/json").handler(ctx => {
  ctx.response()
    .putHeader("Content-Type", "application/json")
    .end(JSON.stringify({message: 'Hello, World!'}));
});

// create an HTTP server and let it be handled by the application
vertx
  .createHttpServer()
  .requestHandler(app)
  .listen(8080);

console.log('Server listening at: http://localhost:8080/');

# Acceso Postgres

En este ejemplo vamos a crear una sencilla aplicacion de consulta Postgres:

{
  "name": "posgres",
  "version": "0.0.1",
  "private": true,
  "main": "index.js",
  "dependencies": {
    "@vertx/core": "latest",
    "@vertx/pg-client": "latest"
  },
  "devDependencies": {
    "@es4x/create": "latest"
  },
  "scripts": {
    "start": "es4x",
    "postinstall": "es4x install"
  }
}

# Instala las dependencias necesarias

$ npm i

> [email protected] postinstall .../hello-world
> es4x install

npm notice created a lockfile as package-lock.json. You should commit this file.
added 2 packages from 1 contributor and audited 2 packages in 6.704s
found 0 vulnerabilities

WARNING

Si ves el mensaje Installing GraalJS..., significa que tu instalacion java en el sistema no es una instalacion GraalVM. Esto es totalmente OK porque se descargan paquetes adicionales para asegurar el mejor rendimiento.

WARNING

Si ves el mensaje Current JDK only supports GraalJS in Interpreted mode!, significa que tu instalacion java en la linea de comandos es menor que 11 o OpenJ9.

# Escribe tu codigo

Ahora que tu proyecto esta listo para ser usado, podemos escribir el codigo:

/// <reference types="@vertx/core" />
// @ts-check

import { PgPool } from '@vertx/pg-client';
import { PoolOptions } from '@vertx/sql-client/options';
import { PgConnectOptions } from '@vertx/pg-client/options';
import { Tuple } from '@vertx/sql-client';

const SELECT_WORLD = "SELECT id, randomnumber from WORLD where id=$1";

let connectOptions = new PgConnectOptions()
  .setCachePreparedStatements(true)
  .setHost('database-server')
  .setUser('dbuser')
  .setPassword('dbpass')
  .setDatabase('hello_world');

// Pool options
let poolOptions = new PoolOptions()
  .setMaxSize(1);

// Create the client pool
let client = PgPool.pool(vertx, connectOptions, poolOptions);

// select a random row from the database
client.preparedQuery(SELECT_WORLD).execute(Tuple.of(Math.random()), res => {
  if (res.succeeded()) {
    let resultSet = res.result().iterator();

    if (!resultSet.hasNext()) {
      ctx.fail(404);
      return;
    }

    let row = resultSet.next();

    console.log({
      id: row.getInteger(0),
      randomNumber: row.getInteger(1)
    });
  } else {
    console.trace(res.cause());
  }
});

# Mas ejemplos?

Se te gustaria ver mas ejemplos, ve a vertx-examples (opens new window). Aunque los ejemplos estan escritos en Java, siguiendo la guia advanced, veras como usar los APIs java es trivial.