001/* 002 * Stallion Core: A Modern Web Framework 003 * 004 * Copyright (C) 2015 - 2016 Stallion Software LLC. 005 * 006 * This program is free software: you can redistribute it and/or modify it under the terms of the 007 * GNU General Public License as published by the Free Software Foundation, either version 2 of 008 * the License, or (at your option) any later version. This program is distributed in the hope that 009 * it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of 010 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public 011 * License for more details. You should have received a copy of the GNU General Public License 012 * along with this program. If not, see <http://www.gnu.org/licenses/gpl-2.0.html>. 013 * 014 * 015 * 016 */ 017 018package io.stallion.dataAccess; 019 020import com.fasterxml.jackson.annotation.JsonIgnore; 021 022/** 023 * A Model is the basic interface by which all data access in Stallion is done. 024 */ 025public interface Model { 026 027 /** 028 * The primary key of the item. 029 * @return 030 */ 031 public Long getId(); ; 032 033 public <Y extends Model> Y setId(Long id); 034 035 /** 036 * The controller used to save/retrieve/update this model. 037 * @return 038 */ 039 @JsonIgnore 040 public ModelController getController(); 041 042 /** 043 * Return true if the model is soft delete, false by default. 044 * @return 045 */ 046 public Boolean getDeleted(); 047 public void setDeleted(Boolean deleted); 048 049 /** 050 * Temporary Marker to indicate that this model should be inserted, not updated 051 * @return 052 */ 053 @JsonIgnore 054 public Boolean getIsNewInsert(); 055 public void setIsNewInsert(Boolean isNewInsert); 056 public String getCompoundId(); 057 058 /** 059 * The datastore bucket associated with this model. 060 * @return 061 */ 062 public String getBucket(); 063 public Model setBucket(String bucket); 064 065 /** 066 * When this model was last changed. 067 * 068 * @return 069 */ 070 public Long getLastModifiedMillis(); 071 public <Y extends Model> Y setLastModifiedMillis(Long millis); 072}