blob: 98fed4483fb89a1f39475f70c48a2617504756f6 [file] [log] [blame]
/*
* Copyright 2000-2012 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.intellij.openapi.vcs.changes.dbCommitted;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* Created with IntelliJ IDEA.
* User: Irina.Chernushina
* Date: 10/8/12
* Time: 4:27 PM
*/
public interface SqliteTables {
String IDX_ROOT_URL = "IDX_ROOT_URL";
String IDX_AUTHOR_NAME = "IDX_AUTHOR_NAME";
String IDX_REVISION_DATE = "IDX_REVISION_DATE";
String IDX_REVISION_NUMBER_INT = "IDX_REVISION_NUMBER_INT";
String IDX_PATHS_PATH = "IDX_PATHS_PATH";
String PREPARED_INSERT_VCS = "PREPARED_INSERT_VCS";
String PREPARED_SELECT_VCS = "PREPARED_SELECT_VCS";
String PREPARED_SELECT_ROOTS = "PREPARED_SELECT_ROOTS";
String PREPARED_INSERT_ROOT = "PREPARED_INSERT_ROOT";
String PREPARED_SELECT_MAX_REVISION = "PREPARED_SELECT_MAX_REVISION";
String PREPARED_FILTER_KNOWN_AUTHORS = "PREPARED_FILTER_KNOWN_AUTHORS";
String PREPARED_ADD_AUTHOR = "PREPARED_ADD_AUTHOR";
String PREPARED_INSERT_REVISION = "PREPARED_INSERT_REVISION";
String PREPARED_READ_PATH = "PREPARED_READ_PATH";
String PREPARED_INSERT_PATH = "PREPARED_INSERT_PATH";
String PREPARED_INSERT_PATH_2_REVS = "PREPARED_INSERT_PATH_2_REVS";
String PREPARED_SELECT_REVISIONS = "PREPARED_SELECT_REVISIONS";
String PREPARED_SELECT_PATH_DATA = "PREPARED_SELECT_PATH_DATA";
String PREPARED_PATHS_2_REVS = "PREPARED_PATHS_2_REVS";
String PREPARED_SELECT_PATH_DATA_BATCH = "PREPARED_SELECT_PATH_DATA_BATCH";
String PREPARED_PATHS_2_REVS_BATCH = "PREPARED_PATHS_2_REVS_BATCH";
String PREPARED_INSERT_INCOMING = "PREPARED_INSERT_INCOMING";
String PREPARED_SELECT_INCOMING = "PREPARED_SELECT_INCOMING";
String PREPARED_SELECT_MIN_REVISION = "PREPARED_SELECT_MIN_REVISION";
String PREPARED_DATES_ONLY = "PREPARED_DATES_ONLY";
String PREPARED_NUMBERS_SUBFOLDER = "PREPARED_NUMBERS_SUBFOLDER";
String PREPARED_NUMBERS_ONLY = "PREPARED_NUMBERS_ONLY";
String PREPARED_DATES_SUBFOLDER = "PREPARED_DATES_SUBFOLDER";
abstract class BaseTable {
public final String ID;
public final String TABLE_NAME;
private final String myCreateTableStatement;
protected BaseTable(String TABLE_NAME, final String createTableStatement) {
myCreateTableStatement = createTableStatement;
this.ID = "ID";
this.TABLE_NAME = TABLE_NAME;
}
public String getCreateTableStatement() {
return myCreateTableStatement;
}
}
@Retention(RetentionPolicy.SOURCE)
@Target({ElementType.FIELD})
@interface Indexed {}
KnownVcs KNOWN_VCS = new KnownVcs();
Root ROOT = new Root();
Author AUTHOR = new Author();
Revision REVISION = new Revision();
Paths PATHS = new Paths();
Paths2Revs PATHS_2_REVS = new Paths2Revs();
IncomingPaths INCOMING_PATHS = new IncomingPaths();
class KnownVcs extends BaseTable {
public KnownVcs() {
super("VCS", "NAME TEXT NOT NULL");
}
public final String NAME = "NAME";
}
class Root extends BaseTable {
public Root() {
super("ROOT", "URL TEXT NOT NULL, VCS_FK INTEGER NOT NULL REFERENCES VCS(ID)");
}
@Indexed
public final String URL = "URL";
public final String VCS_FK = "VCS_FK";
}
class Author extends BaseTable {
public Author() {
super("AUTHOR", "NAME TEXT NOT NULL");
}
// todo index? can have in memory..
@Indexed
public final String NAME = "NAME";
}
class Revision extends BaseTable {
public Revision() {
super("REVISION", "ROOT_FK INTEGER NOT NULL REFERENCES ROOT(ID), " +
"AUTHOR_FK INTEGER NOT NULL REFERENCES AUTHOR(ID), " +
"DATE INTEGER NOT NULL, " +
"NUMBER_STR TEXT NOT NULL, " +
"NUMBER_INT INTEGER NOT NULL, " +
"COMMENT TEXT, COUNT INTEGER NOT NULL, RAW_DATA BLOB");
}
public final String ROOT_FK = "ROOT_FK";
public final String AUTHOR_FK = "AUTHOR_FK";
@Indexed
public final String DATE = "DATE";
public final String NUMBER_STR = "NUMBER_STR";
@Indexed
public final String NUMBER_INT = "NUMBER_INT";
public final String COMMENT = "COMMENT";
public final String COUNT = "COUNT";
public final String RAW_DATA = "RAW_DATA";
}
class Paths extends BaseTable {
public Paths() {
super("PATHS", "ROOT_FK INTEGER NOT NULL REFERENCES ROOT(ID), " +
"PATH TEXT NOT NULL");
}
public final String ROOT_FK = "ROOT_FK";
@Indexed
public final String PATH = "PATH";
}
class Paths2Revs extends BaseTable {
public Paths2Revs() {
super("PATHS_2_REVS", "PATH_FK INTEGER NOT NULL REFERENCES PATHS(ID), " +
"REVISION_FK INTEGER NOT NULL REFERENCES REVISION(ID), " +
"TYPE INTEGER NOT NULL, " +
"COPY_PATH_ID INTEGER REFERENCES PATHS(ID), " +
"VISIBLE INTEGER NOT NULL DEFAULT 1, " +
"DELETE_PATH_ID INTEGER REFERENCES PATHS(ID)");
}
public final String PATH_FK = "PATH_FK";
public final String REVISION_FK = "REVISION_FK";
public final String TYPE = "TYPE";
public final String COPY_PATH_ID = "COPY_PATH_ID";
public final String VISIBLE = "VISIBLE";
public final String DELETE_PATH_ID = "DELETE_PATH_ID";
}
class IncomingPaths extends BaseTable {
public IncomingPaths() {
super("INCOMING_PATHS", "PR_FK INTEGER NOT NULL REFERENCES PATHS_2_REVS (ID)");
}
public final String PR_FK = "";
}
//SqlJetTypeAffinity
}