### Function

# EDataBook bSqlVCardCallback

since: 3.12

#### Declaration

    gchar*
    (* EbSqlVCardCallback) (
      const gchar* uid,
      const gchar* extra,
      gpointer user_data
    )

#### Description [src]

If this callback is passed to e_book_sqlite_new(), then vcards are not stored in the SQLite and instead this callback is invoked to fetch the vcard.

This callback will be called to fetch results for fully indexed and optimized queries, and it will also be called while performing fallback queries against `EContactFields` which are not configured in the `ESourceBackendSummarySetup` or default summary fields.

This user callback is called inside a lock, you must not call the `EBookSqlite` API from this callback..

Available since: 3.12

#### Parameters

`uid`

  Type: `const gchar*`

  A contact UID.

  The data is owned by the caller of the function.
  The value is a NUL terminated UTF-8 string.

`extra`

  Type: `const gchar*`

  The extra data associated to the contact.

  The data is owned by the caller of the function.
  The value is a NUL terminated UTF-8 string.

`user_data`

  Type: `gpointer`

  User data previously passed to e_book_sqlite_new().

  The argument can be `NULL`.
  The data is owned by the caller of the function.

#### Return value

Type: `gchar*`

The appropriate vcard indicated by `uid`.

The caller of the function takes ownership of the data, and is responsible for freeing it.
The value is a NUL terminated UTF-8 string.