[GraphQL] expose file information

This commit is contained in:
Paul Chavard 2019-12-11 12:24:50 +01:00
parent 1146447c14
commit 422b7f37ec
9 changed files with 59 additions and 19 deletions

View file

@ -28,9 +28,9 @@ module Extensions
# This method is called if the result of the `resolve`
# is a lazy value (e.g., a Promise like in our case)
def after_resolve(value:, **_rest)
return if value.nil?
Rails.application.routes.url_helpers.url_for(value)
if value&.virus_scanner&.safe? || value&.virus_scanner&.pending?
value
end
end
end
end

View file

@ -8,7 +8,7 @@ type Association {
}
type Avis {
attachmentUrl: URL
attachment: File
dateQuestion: ISO8601DateTime!
dateReponse: ISO8601DateTime
expert: Profile
@ -383,7 +383,7 @@ type Dossier {
instructeurs: [Profile!]!
messages: [Message!]!
motivation: String
motivationAttachmentUrl: URL
motivationAttachment: File
"""
Le numero du dossier.
@ -663,6 +663,14 @@ type Entreprise {
siretSiegeSocial: String!
}
type File {
byteSize: Int!
checksum: String!
contentType: String!
filename: String!
url: URL!
}
interface GeoArea {
geometry: GeoJSON!
id: ID!
@ -742,7 +750,7 @@ type LinkedDropDownListChamp implements Champ {
}
type Message {
attachmentUrl: URL
attachment: File
body: String!
createdAt: ISO8601DateTime!
email: String!
@ -875,6 +883,7 @@ type PersonnePhysique implements Demandeur {
}
type PieceJustificativeChamp implements Champ {
file: File
id: ID!
"""
@ -886,7 +895,6 @@ type PieceJustificativeChamp implements Champ {
La valeur du champ sous forme texte.
"""
stringValue: String
url: URL
}
type Profile {

View file

@ -7,7 +7,7 @@ module Types
field :date_question, GraphQL::Types::ISO8601DateTime, null: false, method: :created_at
field :date_reponse, GraphQL::Types::ISO8601DateTime, null: true, method: :updated_at
field :attachment_url, Types::URL, null: true, extensions: [
field :attachment, Types::File, null: true, extensions: [
{ Extensions::Attachment => { attachment: :piece_justificative_file } }
]

View file

@ -3,7 +3,7 @@ module Types::Champs
include Rails.application.routes.url_helpers
implements Types::ChampType
field :url, Types::URL, null: true, extensions: [
field :file, Types::File, null: true, extensions: [
{ Extensions::Attachment => { attachment: :piece_justificative_file } }
]
end

View file

@ -20,7 +20,7 @@ module Types
field :archived, Boolean, null: false
field :motivation, String, null: true
field :motivation_attachment_url, Types::URL, null: true, extensions: [
field :motivation_attachment, Types::File, null: true, extensions: [
{ Extensions::Attachment => { attachment: :justificatif_motivation } }
]

13
app/graphql/types/file.rb Normal file
View file

@ -0,0 +1,13 @@
module Types
class File < Types::BaseObject
field :url, Types::URL, null: false
field :filename, String, null: false
field :byte_size, Int, null: false
field :checksum, String, null: false
field :content_type, String, null: false
def url
Rails.application.routes.url_helpers.url_for(object)
end
end
end

View file

@ -4,7 +4,7 @@ module Types
field :email, String, null: false
field :body, String, null: false
field :created_at, GraphQL::Types::ISO8601DateTime, null: false
field :attachment_url, Types::URL, null: true, extensions: [
field :attachment, Types::File, null: true, extensions: [
{ Extensions::Attachment => { attachment: :piece_jointe } }
]