server_documents
Dentro de la definición JSON podemos especificar que el tipo de un campo sea 'server_documents' para poder vincular uno o más documentos a una entidad Datastore o SQL.
El campo de tipo server_documents es un campo que suele ser de tipo string no indexado en Datastore, o de tipo text en SQL. Este tipo de campo NO APLICA a bases de datos BigQuery
{ "fields":
{
"<field-name>": { "type":"server_documents" }
}
}
Permite configurar en los CFOs un tipo de campo de subida de archivos (tipo Dropzone). Ha este tipo de campo podemos aplicar varias configuraciones para personalizarlo al caso de uso de la aplicación que estemos construyendo.
Lo que se almacena dentro del interior del campo de tipo string o text son la referencia a los ficheros con el siguiente formato:
[nombre_del_doc1](gs://<bucket-name>/<path_to_file_1>),[nombre_del_doc2](gs://<bucket-name>/<path_to_file2>), ..
)
Esto hace que de una forma interna tengamos en forma Markdown el enlace de cada documento a su ubicación en un bucket <bucket-name> definido en una serie de Atributos de configuración.
Vinculación de campos tipo server_documents con el CFO CloudFrameWorkDocuments
Cada vez que añadimos uno o más documentos vinculados a un campo de tipo 'server_documents' se registra el CFO: ds:CloudFrameWorkDocuments una entidad cuyos campos:
- DSDBModel = Nombre del CFO que contiene el campo de tipo server_documents
- DSDBField = Nombre del campo en el CFO que es de tipo server_documents
- DSDBId = Valor del Id de la entidad Datastore o registro SQL al que pertenece el campo de tipo server_documents
Además el resto de campos de la entidad almacena información como: quién subió el documento, el nombre del mismo, si está borrado o no, fecha de borrado etc..
Atributos asociados al tipo 'server_documents'
Para añadir un campo de este tipo, debemos añadir a la estructura JSON de configuración de un CFO, en el bloque Fields, un campo de tipo "server_documents":
Opción | Detalle | Ejemplo |
---|---|---|
name | [String] Es el nombre que queremos mostrar como "label" del campo | Documentos asociados |
* type | [String] Es el tipo de documento que vamos a representar en el CFO, en este caso será "server_documents", ya que queremos un campo de subida de archivos | server_documents |
* bucket | [String] Será la ruta del bucket de "Google Storage" que queramos utilizar para alojar los archivos subidos. Esta ruta tiene que tener un formato válido de Google Storage | gs://cloudframework-private/labs |
* cf_bucket | [String] Nombre del campo de la entidad que se utilizará para su valor agrupe los el/los documento/s subido/s. n Datastore será 'KeyName' o 'KeyId' y en SQL será el campo que represen el 'key' del registro | KeyId |
entity | Si el CFO va a tener diferentes extensiones ESTE ATRIBUTO ES IMPORTANTE para evitar perder referencia a los documentos. Por defecto los documentos se almacenan en el CFO[CloudFrameWorkDocuments] y dentro de este modelo el campo DSDBModel indica con qué CFO se va a vincular el documento. Por defecto este valor es nombre de CFO. El problema es que si extendemos el CFO este toma otro nombre y los documentos que se ve en el CFO de origen no se ven en el extendido. Para resolver esto se introduce el atributo entity que podrá tener el nombre de CFO del que extienden los demás. Nombre del CFO a la que se vinculará el documento. | CloudFrameWorkNotifications |
multiple | [Boolean] Esta opción nos permite configurar si nuestro campo acepta solo un archivo o acepta múltiples archivos. La opción por defecto esfalselo que significa que solo se permite un archivo. | false |
accepted_files | [String] Se trata de una lista separada por comas de tipos mime o extensiones de archivo permitidos La opción por defecto esnull,que significa que no hay restricciones y todos los tipos de archivos están permitidos. | image/*,application/pdf,.psd |
max_file_size | [Int] Esta opción nos permite configura un tamaño máximo de archivo (en bytes) para nuestras subidas. La opción por defecto son 5242880(bytes), 5Mb | 5242880 |
Creando un bucket propio en un cliente para el almacenamiento de sus ficheros
Para que se puedan almacenar ficheros en el Bucket de un cliente, este debe autorizar a la PLATAFORMA CLOUD poder escribir en dicho bucket para ello seguiremos las instrucciones de:
XXXXX