SlideShare una empresa de Scribd logo
Yesod Framework
Rocio Amaya
Que és?
Es un framework web :
● que posee seguridad de tipos
● que intenta crear aplicaciones web
performantes
Que és?
● Es capaz de persistir con diferentes tipo
de base de datos
● Puede trabajar en conjunto con
○
○
○
○

GIT
JQuery
AJAX
CSS y JavaScrip

● Puede trabajar bajo la norma i18n
(internalización)
Instalación.
Requisitos:
Tener instalado el ambiente de Haskell
http://hackage.haskell.org/platform/
Luego se escriben los siguientes comandos
en consola:
cabal update
cabal install yesod cabal-dev
cabal install yesod-platform
Crear un proyecto nuevo
A traves del comando
yesod init
pedirá nombre de usuario y nombre de
proyecto.Me dará a elegir proyecto entre:
s = sqlite
p = postgresql
mongo = mongodb
mysql = MySQL (experimental)
Finalmente abrir en http://localhost:3000
Yesod-Persistent
Tipos
Tipos
PersistValue:
Es un tipo que puede representar los datos
que se envían hacia y desde una base de
datos.
Su definición es
data PersistValue = PersistText Text
| PersistByteString ByteString
| PersistInt64 Int64
| PersistDouble Double
| PersistBool Bool
| PersistDay Day
| PersistTimeOfDay TimeOfDay
| PersistUTCTime UTCTime
| PersistNull
| PersistList [PersistValue]
| PersistMap [(T.Text, PersistValue)]
| PersistForeignKey ByteString -- ^
intended especially for MongoDB backend
Generación de código
Persist
Es una funcion que actúa de traductor
convirtiendo lo definido en su interior en una
lista de definiciones de entidades.
MKPersist tiene la lista de entidades y
declara:
● un datatype para cada entidad
● una instancia de PersistEntity para
cada tipo de datos definido
PersistStore
Este typeclass define todas las operaciones
primitivas que puede realizar en una DB.
(Monad (b m)) => PersistStore b m
b es el mismo servidor, y es un
transformador
m es la mónada interior que envuelve
alrededor de b.
PersistStore
Cada DB (PostgreSQL, SQLite, MongoDB)
tiene una instancia de PersistStore.
Aquí es donde todas las traducciones de
PersistValue a determinados valores de la
base de datos se producen, en donde la
generación de consultas SQL que sucede.
withSqliteConn crea una única conexión a
una base de datos.
Migrations
mkMigrate es un template que lo que hace
es crear una funcion para migrar las
entidades definidas en Persist.
Migrations
cambios automaticos cuando:
● el tipo de dato de un campo cambia(a
menos q los datos no puedan traducirse)
● se agrega un campo(a menos q sea
notnull sin default value)
● un campo pasa de notnull a null
● se agrega una nueva entidad
No maneja cambio de nombre de campos ni
traslado de campos hacia otra tabla
Uniqueness
A veces queremos que un campo o una
combinación de varios sean únicos en toda
la tabla, eso es posible con Unique.
Select
Las consultas posibles:
selectList, selercFirst, selectKeys,
selectSource.
Select Options:
Asc, Desc, LimitTo, OffSetBy
Ejemplo:
personas <- selectList[ PersonAge>.25,
PersonAge <=. 30][Asc]
Insert & Update
persona <- insert
$ Person "Rocio" "Amaya" 23
update persona[PersonAge =.24]
updateWhere[ PersonNameEq "Michael"
, PersonAgeGt 25]
[ PersonName "Mike"]
Delete
Disponibles :delete, deleteBy, deleteWhere
Ejemplo:
persona<-Insert Person"ro" "am" 23
● delete persona --es por id
● deleteBy $ UniqueName "ro" "am"
● deleteWhere [PersonFirstName ==. "ro"]
Atributos
Nuestros atributos pueden ser opcionales,
poseer valores por defecto o definir los
nombres que poseerán los campos en la
tabla..
Atributos de filtrado
• Eq- equals
• Ne- not equals
• Lt- less than
• Le- less than or equals
• Gt- greater than
• Ge- greater than or equals
• In- equals any member of a list (like a SQL
IN)
Conclusión
Un framework poderoso que permite crear
aplicaciones completas en un tiempo corto,
con una curva de aprendizaje no muy
elevada.
Los ejemplos y explicaciones del libro y del
sitio mayormente se encuentran
desactualizados con respecto a la última
versión, por lo cual la mayoría de los
ejemplos no compilan o poseen funciones
deprecated.
Para seguir aprendiendo...
Libros:
'Developing web applications with Haskell
and Yesod'
'Yesod Web Framework Book'
Pagina de Yesod : http://www.yesodweb.
com
?
¡Gracias!

Más contenido relacionado

PPTX
Conexión a bases de datos
PPTX
Tarde Técnica Abirtone. MongoDB. Un pequeño sorbo.
PPTX
MongoDB y bluemix
DOCX
Proveedor manuel
ODP
Tipos de memoria.
PPTX
Bt haskell-1
PPT
Original Curry
PDF
Tema 3: Tipos y clases en Haskell
Conexión a bases de datos
Tarde Técnica Abirtone. MongoDB. Un pequeño sorbo.
MongoDB y bluemix
Proveedor manuel
Tipos de memoria.
Bt haskell-1
Original Curry
Tema 3: Tipos y clases en Haskell

Similar a Yesod Framework (20)

PPT
Persistencia de un modelo de objetos
PPTX
Novedades de aries
PDF
CSA - Web Parts en SharePoint 2010
PDF
Taller desarrollando sitios web multiplataforma
PDF
Ejemplo bbdd sqlite (android)
PPTX
Maria taipe..presentaciones
PPTX
Maria taipe..presentaciones
PPTX
Novedades de aries
PDF
Tema 4 5_1_acceso_datos
PPTX
Proveedores contenido
PDF
Ejemplo Base de Datos SQLite (Android)
PDF
Base de datos
PDF
Introducción a Swift
PPT
Base de datos dinamicas
PDF
TUTORIAL DE ADO.NET MUY BUENO
PDF
Seminario jquery, html5 y wicket
DOCX
Edwin montilla trabajo corte 3
PDF
DESPLIEGUE SERVIDOR BASE DE DATOS
PPT
Bases De Datos My Sql
PDF
Taller programación web ajax con jquery
Persistencia de un modelo de objetos
Novedades de aries
CSA - Web Parts en SharePoint 2010
Taller desarrollando sitios web multiplataforma
Ejemplo bbdd sqlite (android)
Maria taipe..presentaciones
Maria taipe..presentaciones
Novedades de aries
Tema 4 5_1_acceso_datos
Proveedores contenido
Ejemplo Base de Datos SQLite (Android)
Base de datos
Introducción a Swift
Base de datos dinamicas
TUTORIAL DE ADO.NET MUY BUENO
Seminario jquery, html5 y wicket
Edwin montilla trabajo corte 3
DESPLIEGUE SERVIDOR BASE DE DATOS
Bases De Datos My Sql
Taller programación web ajax con jquery
Publicidad

Yesod Framework

  • 2. Que és? Es un framework web : ● que posee seguridad de tipos ● que intenta crear aplicaciones web performantes
  • 3. Que és? ● Es capaz de persistir con diferentes tipo de base de datos ● Puede trabajar en conjunto con ○ ○ ○ ○ GIT JQuery AJAX CSS y JavaScrip ● Puede trabajar bajo la norma i18n (internalización)
  • 4. Instalación. Requisitos: Tener instalado el ambiente de Haskell http://hackage.haskell.org/platform/ Luego se escriben los siguientes comandos en consola: cabal update cabal install yesod cabal-dev cabal install yesod-platform
  • 5. Crear un proyecto nuevo A traves del comando yesod init pedirá nombre de usuario y nombre de proyecto.Me dará a elegir proyecto entre: s = sqlite p = postgresql mongo = mongodb mysql = MySQL (experimental) Finalmente abrir en http://localhost:3000
  • 8. Tipos PersistValue: Es un tipo que puede representar los datos que se envían hacia y desde una base de datos.
  • 9. Su definición es data PersistValue = PersistText Text | PersistByteString ByteString | PersistInt64 Int64 | PersistDouble Double | PersistBool Bool | PersistDay Day | PersistTimeOfDay TimeOfDay | PersistUTCTime UTCTime | PersistNull | PersistList [PersistValue] | PersistMap [(T.Text, PersistValue)] | PersistForeignKey ByteString -- ^ intended especially for MongoDB backend
  • 10. Generación de código Persist Es una funcion que actúa de traductor convirtiendo lo definido en su interior en una lista de definiciones de entidades. MKPersist tiene la lista de entidades y declara: ● un datatype para cada entidad ● una instancia de PersistEntity para cada tipo de datos definido
  • 11. PersistStore Este typeclass define todas las operaciones primitivas que puede realizar en una DB. (Monad (b m)) => PersistStore b m b es el mismo servidor, y es un transformador m es la mónada interior que envuelve alrededor de b.
  • 12. PersistStore Cada DB (PostgreSQL, SQLite, MongoDB) tiene una instancia de PersistStore. Aquí es donde todas las traducciones de PersistValue a determinados valores de la base de datos se producen, en donde la generación de consultas SQL que sucede. withSqliteConn crea una única conexión a una base de datos.
  • 13. Migrations mkMigrate es un template que lo que hace es crear una funcion para migrar las entidades definidas en Persist.
  • 14. Migrations cambios automaticos cuando: ● el tipo de dato de un campo cambia(a menos q los datos no puedan traducirse) ● se agrega un campo(a menos q sea notnull sin default value) ● un campo pasa de notnull a null ● se agrega una nueva entidad No maneja cambio de nombre de campos ni traslado de campos hacia otra tabla
  • 15. Uniqueness A veces queremos que un campo o una combinación de varios sean únicos en toda la tabla, eso es posible con Unique.
  • 16. Select Las consultas posibles: selectList, selercFirst, selectKeys, selectSource. Select Options: Asc, Desc, LimitTo, OffSetBy Ejemplo: personas <- selectList[ PersonAge>.25, PersonAge <=. 30][Asc]
  • 17. Insert & Update persona <- insert $ Person "Rocio" "Amaya" 23 update persona[PersonAge =.24] updateWhere[ PersonNameEq "Michael" , PersonAgeGt 25] [ PersonName "Mike"]
  • 18. Delete Disponibles :delete, deleteBy, deleteWhere Ejemplo: persona<-Insert Person"ro" "am" 23 ● delete persona --es por id ● deleteBy $ UniqueName "ro" "am" ● deleteWhere [PersonFirstName ==. "ro"]
  • 19. Atributos Nuestros atributos pueden ser opcionales, poseer valores por defecto o definir los nombres que poseerán los campos en la tabla..
  • 20. Atributos de filtrado • Eq- equals • Ne- not equals • Lt- less than • Le- less than or equals • Gt- greater than • Ge- greater than or equals • In- equals any member of a list (like a SQL IN)
  • 21. Conclusión Un framework poderoso que permite crear aplicaciones completas en un tiempo corto, con una curva de aprendizaje no muy elevada. Los ejemplos y explicaciones del libro y del sitio mayormente se encuentran desactualizados con respecto a la última versión, por lo cual la mayoría de los ejemplos no compilan o poseen funciones deprecated.
  • 22. Para seguir aprendiendo... Libros: 'Developing web applications with Haskell and Yesod' 'Yesod Web Framework Book' Pagina de Yesod : http://www.yesodweb. com
  • 23. ?