package com.atlassian.stash.internal.notification.batch.dao;

import com.google.common.base.Function;

import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import java.util.Date;

/**
 * Information about a notification for a specific user.
 */
public interface UserNotification {

    /**
     * @return primary key
     */
    long getId();

    /**
     * @return recipient of the notification
     */
    int getUserId();

    /**
     * @return when the event for the notification happened
     */
    @Nonnull
    Date getTimestamp();

    /**
     * @return the ID of the batch sender that will handle this notification
     */
    @Nonnull
    String getBatchSenderId();

    /**
     * @return the ID of the batch this notification belongs to, or {@code null}
     */
    @Nullable
    String getBatchId();

    /**
     * @return data that is stored when the event happens and later used when sending the notification
     */
    @Nonnull
    String getData();

}
