mirror of
https://github.com/google/nomulus.git
synced 2025-05-22 20:29:36 +02:00
Create SQL schema for RdeRevision (#835)
* Create SQL schema for RdeRevision * Split RdeRevision IDs into three separate DB fields as unified pkey * Rename variable * Merge remote-tracking branch 'origin/master' into rdeRevision * Rename variable in one other location * Implement no-op toDatastore/Sql for RdeRevision * Responses to CR * Merge remote-tracking branch 'origin/master' into rdeRevision * Use a date for the date column * Fix exception messages in tests * Regen diagram to fix the test * Use assignment in static factory methods * Merge remote-tracking branch 'origin/master' into rdeRevision
This commit is contained in:
parent
9ddde4799c
commit
3ed3b351d0
11 changed files with 895 additions and 525 deletions
|
@ -15,17 +15,32 @@
|
||||||
package google.registry.model.rde;
|
package google.registry.model.rde;
|
||||||
|
|
||||||
import static com.google.common.base.Preconditions.checkArgument;
|
import static com.google.common.base.Preconditions.checkArgument;
|
||||||
import static com.google.common.base.Verify.verify;
|
|
||||||
import static com.google.common.base.Verify.verifyNotNull;
|
|
||||||
import static google.registry.model.ofy.ObjectifyService.ofy;
|
|
||||||
import static google.registry.model.rde.RdeNamingUtils.makePartialName;
|
import static google.registry.model.rde.RdeNamingUtils.makePartialName;
|
||||||
import static google.registry.persistence.transaction.TransactionManagerFactory.tm;
|
import static google.registry.persistence.transaction.TransactionManagerFactory.tm;
|
||||||
|
|
||||||
import com.google.common.base.VerifyException;
|
import com.google.common.base.VerifyException;
|
||||||
|
import com.google.common.collect.ImmutableList;
|
||||||
|
import com.googlecode.objectify.Key;
|
||||||
import com.googlecode.objectify.annotation.Entity;
|
import com.googlecode.objectify.annotation.Entity;
|
||||||
import com.googlecode.objectify.annotation.Id;
|
import com.googlecode.objectify.annotation.Id;
|
||||||
|
import com.googlecode.objectify.annotation.Ignore;
|
||||||
|
import google.registry.model.BackupGroupRoot;
|
||||||
import google.registry.model.ImmutableObject;
|
import google.registry.model.ImmutableObject;
|
||||||
|
import google.registry.model.rde.RdeRevision.RdeRevisionId;
|
||||||
|
import google.registry.persistence.VKey;
|
||||||
|
import google.registry.persistence.converter.LocalDateConverter;
|
||||||
|
import google.registry.schema.replay.DatastoreEntity;
|
||||||
|
import google.registry.schema.replay.SqlEntity;
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.util.Optional;
|
||||||
|
import javax.persistence.Column;
|
||||||
|
import javax.persistence.Convert;
|
||||||
|
import javax.persistence.EnumType;
|
||||||
|
import javax.persistence.Enumerated;
|
||||||
|
import javax.persistence.IdClass;
|
||||||
|
import javax.persistence.Transient;
|
||||||
import org.joda.time.DateTime;
|
import org.joda.time.DateTime;
|
||||||
|
import org.joda.time.LocalDate;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Datastore entity for tracking RDE revisions.
|
* Datastore entity for tracking RDE revisions.
|
||||||
|
@ -35,32 +50,67 @@ import org.joda.time.DateTime;
|
||||||
* flag is included in the generated XML.
|
* flag is included in the generated XML.
|
||||||
*/
|
*/
|
||||||
@Entity
|
@Entity
|
||||||
public final class RdeRevision extends ImmutableObject {
|
@javax.persistence.Entity
|
||||||
|
@IdClass(RdeRevisionId.class)
|
||||||
|
public final class RdeRevision extends BackupGroupRoot implements DatastoreEntity, SqlEntity {
|
||||||
|
|
||||||
/** String triplet of tld, date, and mode, e.g. {@code soy_2015-09-01_full}. */
|
/** String triplet of tld, date, and mode, e.g. {@code soy_2015-09-01_full}. */
|
||||||
@Id
|
@Id @Transient String id;
|
||||||
String id;
|
|
||||||
|
@javax.persistence.Id @Ignore String tld;
|
||||||
|
|
||||||
|
@javax.persistence.Id @Ignore LocalDate date;
|
||||||
|
|
||||||
|
@javax.persistence.Id @Ignore RdeMode mode;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Number of last revision successfully staged to GCS.
|
* Number of last revision successfully staged to GCS.
|
||||||
*
|
*
|
||||||
* <p>This values begins at zero upon object creation and thenceforth incremented transactionally.
|
* <p>This values begins at zero upon object creation and thenceforth incremented transactionally.
|
||||||
*/
|
*/
|
||||||
|
@Column(nullable = false)
|
||||||
int revision;
|
int revision;
|
||||||
|
|
||||||
|
/** Hibernate requires an empty constructor. */
|
||||||
|
private RdeRevision() {}
|
||||||
|
|
||||||
|
public static RdeRevision create(
|
||||||
|
String id, String tld, LocalDate date, RdeMode mode, int revision) {
|
||||||
|
RdeRevision instance = new RdeRevision();
|
||||||
|
instance.id = id;
|
||||||
|
instance.tld = tld;
|
||||||
|
instance.date = date;
|
||||||
|
instance.mode = mode;
|
||||||
|
instance.revision = revision;
|
||||||
|
return instance;
|
||||||
|
}
|
||||||
|
|
||||||
public int getRevision() {
|
public int getRevision() {
|
||||||
return revision;
|
return revision;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ImmutableList<SqlEntity> toSqlEntities() {
|
||||||
|
return ImmutableList.of(); // we don't care about RdeRevision history
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ImmutableList<DatastoreEntity> toDatastoreEntities() {
|
||||||
|
return ImmutableList.of(); // we don't care about RdeRevision history
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns next revision ID to use when staging a new deposit file for the given triplet.
|
* Returns next revision ID to use when staging a new deposit file for the given triplet.
|
||||||
*
|
*
|
||||||
* @return {@code 0} for first deposit generation and {@code >0} for resends
|
* @return {@code 0} for first deposit generation and {@code >0} for resends
|
||||||
*/
|
*/
|
||||||
public static int getNextRevision(String tld, DateTime date, RdeMode mode) {
|
public static int getNextRevision(String tld, DateTime date, RdeMode mode) {
|
||||||
RdeRevision object =
|
String id = makePartialName(tld, date, mode);
|
||||||
ofy().load().type(RdeRevision.class).id(makePartialName(tld, date, mode)).now();
|
RdeRevisionId sqlKey = RdeRevisionId.create(tld, date.toLocalDate(), mode);
|
||||||
return object == null ? 0 : object.revision + 1;
|
Key<RdeRevision> ofyKey = Key.create(RdeRevision.class, id);
|
||||||
|
Optional<RdeRevision> revisionOptional =
|
||||||
|
tm().maybeLoad(VKey.create(RdeRevision.class, sqlKey, ofyKey));
|
||||||
|
return revisionOptional.map(rdeRevision -> rdeRevision.revision + 1).orElse(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -76,17 +126,56 @@ public final class RdeRevision extends ImmutableObject {
|
||||||
checkArgument(revision >= 0, "Negative revision: %s", revision);
|
checkArgument(revision >= 0, "Negative revision: %s", revision);
|
||||||
String triplet = makePartialName(tld, date, mode);
|
String triplet = makePartialName(tld, date, mode);
|
||||||
tm().assertInTransaction();
|
tm().assertInTransaction();
|
||||||
RdeRevision object = ofy().load().type(RdeRevision.class).id(triplet).now();
|
RdeRevisionId sqlKey = RdeRevisionId.create(tld, date.toLocalDate(), mode);
|
||||||
|
Key<RdeRevision> ofyKey = Key.create(RdeRevision.class, triplet);
|
||||||
|
Optional<RdeRevision> revisionOptional =
|
||||||
|
tm().maybeLoad(VKey.create(RdeRevision.class, sqlKey, ofyKey));
|
||||||
if (revision == 0) {
|
if (revision == 0) {
|
||||||
verify(object == null, "RdeRevision object already created: %s", object);
|
revisionOptional.ifPresent(
|
||||||
|
rdeRevision -> {
|
||||||
|
throw new IllegalArgumentException(
|
||||||
|
String.format(
|
||||||
|
"RdeRevision object already created and revision 0 specified: %s",
|
||||||
|
rdeRevision));
|
||||||
|
});
|
||||||
} else {
|
} else {
|
||||||
verifyNotNull(object, "RDE revision object missing for %s?! revision=%s", triplet, revision);
|
checkArgument(
|
||||||
verify(object.revision == revision - 1,
|
revisionOptional.isPresent(),
|
||||||
"RDE revision object should be at %s but was: %s", revision - 1, object);
|
"Couldn't find existing RDE revision %s when trying to save new revision %s",
|
||||||
|
triplet,
|
||||||
|
revision);
|
||||||
|
checkArgument(
|
||||||
|
revisionOptional.get().revision == revision - 1,
|
||||||
|
"RDE revision object should be at revision %s but was: %s",
|
||||||
|
revision - 1,
|
||||||
|
revisionOptional.get());
|
||||||
|
}
|
||||||
|
RdeRevision object = RdeRevision.create(triplet, tld, date.toLocalDate(), mode, revision);
|
||||||
|
tm().put(object);
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Class to represent the composite primary key of {@link RdeRevision} entity. */
|
||||||
|
static class RdeRevisionId extends ImmutableObject implements Serializable {
|
||||||
|
|
||||||
|
String tld;
|
||||||
|
|
||||||
|
// Auto-conversion doesn't work for ID classes, we must specify @Column and @Convert
|
||||||
|
@Column(columnDefinition = "date")
|
||||||
|
@Convert(converter = LocalDateConverter.class)
|
||||||
|
LocalDate date;
|
||||||
|
|
||||||
|
@Enumerated(EnumType.STRING)
|
||||||
|
RdeMode mode;
|
||||||
|
|
||||||
|
/** Hibernate requires this default constructor. */
|
||||||
|
private RdeRevisionId() {}
|
||||||
|
|
||||||
|
static RdeRevisionId create(String tld, LocalDate date, RdeMode mode) {
|
||||||
|
RdeRevisionId instance = new RdeRevisionId();
|
||||||
|
instance.tld = tld;
|
||||||
|
instance.date = date;
|
||||||
|
instance.mode = mode;
|
||||||
|
return instance;
|
||||||
}
|
}
|
||||||
object = new RdeRevision();
|
|
||||||
object.id = triplet;
|
|
||||||
object.revision = revision;
|
|
||||||
ofy().save().entity(object);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -53,6 +53,7 @@
|
||||||
<class>google.registry.model.poll.PollMessage</class>
|
<class>google.registry.model.poll.PollMessage</class>
|
||||||
<class>google.registry.model.poll.PollMessage$OneTime</class>
|
<class>google.registry.model.poll.PollMessage$OneTime</class>
|
||||||
<class>google.registry.model.poll.PollMessage$Autorenew</class>
|
<class>google.registry.model.poll.PollMessage$Autorenew</class>
|
||||||
|
<class>google.registry.model.rde.RdeRevision</class>
|
||||||
<class>google.registry.model.registrar.Registrar</class>
|
<class>google.registry.model.registrar.Registrar</class>
|
||||||
<class>google.registry.model.registrar.RegistrarContact</class>
|
<class>google.registry.model.registrar.RegistrarContact</class>
|
||||||
<class>google.registry.model.registry.label.PremiumList</class>
|
<class>google.registry.model.registry.label.PremiumList</class>
|
||||||
|
|
|
@ -15,118 +15,116 @@
|
||||||
package google.registry.model.rde;
|
package google.registry.model.rde;
|
||||||
|
|
||||||
import static com.google.common.truth.Truth.assertThat;
|
import static com.google.common.truth.Truth.assertThat;
|
||||||
import static google.registry.model.ofy.ObjectifyService.ofy;
|
|
||||||
import static google.registry.model.rde.RdeMode.FULL;
|
import static google.registry.model.rde.RdeMode.FULL;
|
||||||
import static google.registry.model.rde.RdeRevision.getNextRevision;
|
import static google.registry.model.rde.RdeRevision.getNextRevision;
|
||||||
import static google.registry.model.rde.RdeRevision.saveRevision;
|
import static google.registry.model.rde.RdeRevision.saveRevision;
|
||||||
import static google.registry.persistence.transaction.TransactionManagerFactory.tm;
|
import static google.registry.persistence.transaction.TransactionManagerFactory.tm;
|
||||||
import static org.junit.jupiter.api.Assertions.assertThrows;
|
import static org.junit.jupiter.api.Assertions.assertThrows;
|
||||||
|
|
||||||
import com.google.common.base.VerifyException;
|
import google.registry.model.EntityTestCase;
|
||||||
import google.registry.testing.AppEngineExtension;
|
import google.registry.testing.DualDatabaseTest;
|
||||||
import org.joda.time.DateTime;
|
import org.joda.time.DateTime;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.BeforeEach;
|
||||||
import org.junit.jupiter.api.extension.RegisterExtension;
|
import org.junit.jupiter.api.TestTemplate;
|
||||||
|
|
||||||
/** Unit tests for {@link RdeRevision}. */
|
/** Unit tests for {@link RdeRevision}. */
|
||||||
public class RdeRevisionTest {
|
@DualDatabaseTest
|
||||||
|
public class RdeRevisionTest extends EntityTestCase {
|
||||||
|
|
||||||
@RegisterExtension
|
public RdeRevisionTest() {
|
||||||
final AppEngineExtension appEngine =
|
super(JpaEntityCoverageCheck.ENABLED);
|
||||||
AppEngineExtension.builder().withDatastoreAndCloudSql().build();
|
}
|
||||||
|
|
||||||
@Test
|
@BeforeEach
|
||||||
|
void beforeEach() {
|
||||||
|
fakeClock.setTo(DateTime.parse("1984-12-18TZ"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestTemplate
|
||||||
void testGetNextRevision_objectDoesntExist_returnsZero() {
|
void testGetNextRevision_objectDoesntExist_returnsZero() {
|
||||||
assertThat(getNextRevision("torment", DateTime.parse("1984-12-18TZ"), FULL)).isEqualTo(0);
|
tm().transact(
|
||||||
|
() -> assertThat(getNextRevision("torment", fakeClock.nowUtc(), FULL)).isEqualTo(0));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@TestTemplate
|
||||||
void testGetNextRevision_objectExistsAtZero_returnsOne() {
|
void testGetNextRevision_objectExistsAtZero_returnsOne() {
|
||||||
save("sorrow", DateTime.parse("1984-12-18TZ"), FULL, 0);
|
save("sorrow", fakeClock.nowUtc(), FULL, 0);
|
||||||
assertThat(getNextRevision("sorrow", DateTime.parse("1984-12-18TZ"), FULL)).isEqualTo(1);
|
tm().transact(
|
||||||
|
() -> assertThat(getNextRevision("sorrow", fakeClock.nowUtc(), FULL)).isEqualTo(1));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@TestTemplate
|
||||||
void testSaveRevision_objectDoesntExist_newRevisionIsZero_nextRevIsOne() {
|
void testSaveRevision_objectDoesntExist_newRevisionIsZero_nextRevIsOne() {
|
||||||
tm().transact(() -> saveRevision("despondency", DateTime.parse("1984-12-18TZ"), FULL, 0));
|
tm().transact(() -> saveRevision("despondency", fakeClock.nowUtc(), FULL, 0));
|
||||||
tm().transact(
|
tm().transact(
|
||||||
() ->
|
() ->
|
||||||
assertThat(getNextRevision("despondency", DateTime.parse("1984-12-18TZ"), FULL))
|
assertThat(getNextRevision("despondency", fakeClock.nowUtc(), FULL)).isEqualTo(1));
|
||||||
.isEqualTo(1));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@TestTemplate
|
||||||
void testSaveRevision_objectDoesntExist_newRevisionIsOne_throwsVe() {
|
void testSaveRevision_objectDoesntExist_newRevisionIsOne_throwsVe() {
|
||||||
VerifyException thrown =
|
IllegalArgumentException thrown =
|
||||||
assertThrows(
|
assertThrows(
|
||||||
VerifyException.class,
|
IllegalArgumentException.class,
|
||||||
() ->
|
() -> tm().transact(() -> saveRevision("despondency", fakeClock.nowUtc(), FULL, 1)));
|
||||||
tm().transact(
|
assertThat(thrown)
|
||||||
() ->
|
.hasMessageThat()
|
||||||
saveRevision("despondency", DateTime.parse("1984-12-18TZ"), FULL, 1)));
|
.isEqualTo(
|
||||||
assertThat(thrown).hasMessageThat().contains("object missing");
|
"Couldn't find existing RDE revision despondency_1984-12-18_full "
|
||||||
|
+ "when trying to save new revision 1");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@TestTemplate
|
||||||
void testSaveRevision_objectExistsAtZero_newRevisionIsZero_throwsVe() {
|
void testSaveRevision_objectExistsAtZero_newRevisionIsZero_throwsVe() {
|
||||||
save("melancholy", DateTime.parse("1984-12-18TZ"), FULL, 0);
|
save("melancholy", fakeClock.nowUtc(), FULL, 0);
|
||||||
VerifyException thrown =
|
IllegalArgumentException thrown =
|
||||||
assertThrows(
|
assertThrows(
|
||||||
VerifyException.class,
|
IllegalArgumentException.class,
|
||||||
() ->
|
() -> tm().transact(() -> saveRevision("melancholy", fakeClock.nowUtc(), FULL, 0)));
|
||||||
tm().transact(
|
|
||||||
() -> saveRevision("melancholy", DateTime.parse("1984-12-18TZ"), FULL, 0)));
|
|
||||||
assertThat(thrown).hasMessageThat().contains("object already created");
|
assertThat(thrown).hasMessageThat().contains("object already created");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@TestTemplate
|
||||||
void testSaveRevision_objectExistsAtZero_newRevisionIsOne_nextRevIsTwo() {
|
void testSaveRevision_objectExistsAtZero_newRevisionIsOne_nextRevIsTwo() {
|
||||||
save("melancholy", DateTime.parse("1984-12-18TZ"), FULL, 0);
|
DateTime startOfDay = fakeClock.nowUtc().withTimeAtStartOfDay();
|
||||||
tm().transact(() -> saveRevision("melancholy", DateTime.parse("1984-12-18TZ"), FULL, 1));
|
save("melancholy", startOfDay, FULL, 0);
|
||||||
tm().transact(
|
fakeClock.advanceOneMilli();
|
||||||
() ->
|
tm().transact(() -> saveRevision("melancholy", startOfDay, FULL, 1));
|
||||||
assertThat(getNextRevision("melancholy", DateTime.parse("1984-12-18TZ"), FULL))
|
tm().transact(() -> assertThat(getNextRevision("melancholy", startOfDay, FULL)).isEqualTo(2));
|
||||||
.isEqualTo(2));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@TestTemplate
|
||||||
void testSaveRevision_objectExistsAtZero_newRevisionIsTwo_throwsVe() {
|
void testSaveRevision_objectExistsAtZero_newRevisionIsTwo_throwsVe() {
|
||||||
save("melancholy", DateTime.parse("1984-12-18TZ"), FULL, 0);
|
save("melancholy", fakeClock.nowUtc(), FULL, 0);
|
||||||
VerifyException thrown =
|
IllegalArgumentException thrown =
|
||||||
assertThrows(
|
assertThrows(
|
||||||
VerifyException.class,
|
IllegalArgumentException.class,
|
||||||
() ->
|
() -> tm().transact(() -> saveRevision("melancholy", fakeClock.nowUtc(), FULL, 2)));
|
||||||
tm().transact(
|
assertThat(thrown)
|
||||||
() -> saveRevision("melancholy", DateTime.parse("1984-12-18TZ"), FULL, 2)));
|
.hasMessageThat()
|
||||||
assertThat(thrown).hasMessageThat().contains("should be at 1 ");
|
.contains("RDE revision object should be at revision 1 but was");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@TestTemplate
|
||||||
void testSaveRevision_negativeRevision_throwsIae() {
|
void testSaveRevision_negativeRevision_throwsIae() {
|
||||||
IllegalArgumentException thrown =
|
IllegalArgumentException thrown =
|
||||||
assertThrows(
|
assertThrows(
|
||||||
IllegalArgumentException.class,
|
IllegalArgumentException.class,
|
||||||
() ->
|
() -> tm().transact(() -> saveRevision("melancholy", fakeClock.nowUtc(), FULL, -1)));
|
||||||
tm().transact(
|
|
||||||
() ->
|
|
||||||
saveRevision("melancholy", DateTime.parse("1984-12-18TZ"), FULL, -1)));
|
|
||||||
assertThat(thrown).hasMessageThat().contains("Negative revision");
|
assertThat(thrown).hasMessageThat().contains("Negative revision");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@TestTemplate
|
||||||
void testSaveRevision_callerNotInTransaction_throwsIse() {
|
void testSaveRevision_callerNotInTransaction_throwsIse() {
|
||||||
IllegalStateException thrown =
|
IllegalStateException thrown =
|
||||||
assertThrows(
|
assertThrows(
|
||||||
IllegalStateException.class,
|
IllegalStateException.class, () -> saveRevision("frenzy", fakeClock.nowUtc(), FULL, 1));
|
||||||
() -> saveRevision("frenzy", DateTime.parse("1984-12-18TZ"), FULL, 1));
|
|
||||||
assertThat(thrown).hasMessageThat().contains("transaction");
|
assertThat(thrown).hasMessageThat().contains("transaction");
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void save(String tld, DateTime date, RdeMode mode, int revision) {
|
public static void save(String tld, DateTime date, RdeMode mode, int revision) {
|
||||||
String triplet = RdeNamingUtils.makePartialName(tld, date, mode);
|
String triplet = RdeNamingUtils.makePartialName(tld, date, mode);
|
||||||
RdeRevision object = new RdeRevision();
|
RdeRevision object = RdeRevision.create(triplet, tld, date.toLocalDate(), mode, revision);
|
||||||
object.id = triplet;
|
tm().transact(() -> tm().put(object));
|
||||||
object.revision = revision;
|
|
||||||
ofy().saveWithoutBackup().entity(object).now();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,6 +24,7 @@ import google.registry.model.history.ContactHistoryTest;
|
||||||
import google.registry.model.history.DomainHistoryTest;
|
import google.registry.model.history.DomainHistoryTest;
|
||||||
import google.registry.model.history.HostHistoryTest;
|
import google.registry.model.history.HostHistoryTest;
|
||||||
import google.registry.model.poll.PollMessageTest;
|
import google.registry.model.poll.PollMessageTest;
|
||||||
|
import google.registry.model.rde.RdeRevisionTest;
|
||||||
import google.registry.model.registry.RegistryLockDaoTest;
|
import google.registry.model.registry.RegistryLockDaoTest;
|
||||||
import google.registry.model.registry.RegistryTest;
|
import google.registry.model.registry.RegistryTest;
|
||||||
import google.registry.model.registry.label.ReservedListSqlDaoTest;
|
import google.registry.model.registry.label.ReservedListSqlDaoTest;
|
||||||
|
@ -86,6 +87,7 @@ import org.junit.runner.RunWith;
|
||||||
LockDaoTest.class,
|
LockDaoTest.class,
|
||||||
PollMessageTest.class,
|
PollMessageTest.class,
|
||||||
PremiumListDaoTest.class,
|
PremiumListDaoTest.class,
|
||||||
|
RdeRevisionTest.class,
|
||||||
RegistrarDaoTest.class,
|
RegistrarDaoTest.class,
|
||||||
RegistryTest.class,
|
RegistryTest.class,
|
||||||
ReservedListSqlDaoTest.class,
|
ReservedListSqlDaoTest.class,
|
||||||
|
|
|
@ -523,6 +523,7 @@ class google.registry.model.poll.PollMessage$OneTime {
|
||||||
}
|
}
|
||||||
class google.registry.model.rde.RdeRevision {
|
class google.registry.model.rde.RdeRevision {
|
||||||
@Id java.lang.String id;
|
@Id java.lang.String id;
|
||||||
|
google.registry.model.UpdateAutoTimestamp updateTimestamp;
|
||||||
int revision;
|
int revision;
|
||||||
}
|
}
|
||||||
class google.registry.model.registrar.Registrar {
|
class google.registry.model.registrar.Registrar {
|
||||||
|
|
|
@ -261,19 +261,19 @@ td.section {
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td class="property_name">generated on</td>
|
<td class="property_name">generated on</td>
|
||||||
<td class="property_value">2020-10-19 18:49:22.440463</td>
|
<td class="property_value">2020-10-21 14:40:52.221127</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td class="property_name">last flyway file</td>
|
<td class="property_name">last flyway file</td>
|
||||||
<td id="lastFlywayFile" class="property_value">V65__local_date_date_type.sql</td>
|
<td id="lastFlywayFile" class="property_value">V66__create_rde_revision.sql</td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
<p> </p>
|
<p> </p>
|
||||||
<p> </p>
|
<p> </p>
|
||||||
<svg viewbox="0.00 0.00 3506.90 2635.50" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" id="erDiagram" style="overflow: hidden; width: 100%; height: 800px"> <g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 2631.5)">
|
<svg viewbox="0.00 0.00 3506.90 2739.50" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" id="erDiagram" style="overflow: hidden; width: 100%; height: 800px"> <g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 2735.5)">
|
||||||
<title>SchemaCrawler_Diagram</title>
|
<title>SchemaCrawler_Diagram</title>
|
||||||
<polygon fill="white" stroke="transparent" points="-4,4 -4,-2631.5 3502.9,-2631.5 3502.9,4 -4,4" />
|
<polygon fill="white" stroke="transparent" points="-4,4 -4,-2735.5 3502.9,-2735.5 3502.9,4 -4,4" />
|
||||||
<text text-anchor="start" x="3230.4" y="-29.8" font-family="Helvetica,sans-Serif" font-size="14.00">
|
<text text-anchor="start" x="3230.4" y="-29.8" font-family="Helvetica,sans-Serif" font-size="14.00">
|
||||||
generated by
|
generated by
|
||||||
</text>
|
</text>
|
||||||
|
@ -284,7 +284,7 @@ td.section {
|
||||||
generated on
|
generated on
|
||||||
</text>
|
</text>
|
||||||
<text text-anchor="start" x="3313.4" y="-10.8" font-family="Helvetica,sans-Serif" font-size="14.00">
|
<text text-anchor="start" x="3313.4" y="-10.8" font-family="Helvetica,sans-Serif" font-size="14.00">
|
||||||
2020-10-19 18:49:22.440463
|
2020-10-21 14:40:52.221127
|
||||||
</text>
|
</text>
|
||||||
<polygon fill="none" stroke="#888888" points="3225.9,-4 3225.9,-44 3490.9,-44 3490.9,-4 3225.9,-4" /> <!-- allocationtoken_a08ccbef -->
|
<polygon fill="none" stroke="#888888" points="3225.9,-4 3225.9,-44 3490.9,-44 3490.9,-4 3225.9,-4" /> <!-- allocationtoken_a08ccbef -->
|
||||||
<g id="node1" class="node">
|
<g id="node1" class="node">
|
||||||
|
@ -521,7 +521,7 @@ td.section {
|
||||||
fk_billing_cancellation_billing_recurrence_id
|
fk_billing_cancellation_billing_recurrence_id
|
||||||
</text>
|
</text>
|
||||||
</g> <!-- registrar_6e1503e3 -->
|
</g> <!-- registrar_6e1503e3 -->
|
||||||
<g id="node23" class="node">
|
<g id="node24" class="node">
|
||||||
<title>registrar_6e1503e3</title>
|
<title>registrar_6e1503e3</title>
|
||||||
<polygon fill="#ebcef2" stroke="transparent" points="9.5,-1102 9.5,-1121 116.5,-1121 116.5,-1102 9.5,-1102" />
|
<polygon fill="#ebcef2" stroke="transparent" points="9.5,-1102 9.5,-1121 116.5,-1121 116.5,-1102 9.5,-1102" />
|
||||||
<text text-anchor="start" x="11.5" y="-1108.8" font-family="Helvetica,sans-Serif" font-weight="bold" font-style="italic" font-size="14.00">
|
<text text-anchor="start" x="11.5" y="-1108.8" font-family="Helvetica,sans-Serif" font-weight="bold" font-style="italic" font-size="14.00">
|
||||||
|
@ -2203,280 +2203,316 @@ td.section {
|
||||||
<text text-anchor="start" x="2969" y="-1918.8" font-family="Helvetica,sans-Serif" font-size="14.00">
|
<text text-anchor="start" x="2969" y="-1918.8" font-family="Helvetica,sans-Serif" font-size="14.00">
|
||||||
fko0gw90lpo1tuee56l0nb6y6g5
|
fko0gw90lpo1tuee56l0nb6y6g5
|
||||||
</text>
|
</text>
|
||||||
|
</g> <!-- rderevision_83396864 -->
|
||||||
|
<g id="node23" class="node">
|
||||||
|
<title>rderevision_83396864</title>
|
||||||
|
<polygon fill="#ebcef2" stroke="transparent" points="3231,-2030 3231,-2049 3361,-2049 3361,-2030 3231,-2030" />
|
||||||
|
<text text-anchor="start" x="3233" y="-2036.8" font-family="Helvetica,sans-Serif" font-weight="bold" font-style="italic" font-size="14.00">
|
||||||
|
public.RdeRevision
|
||||||
|
</text>
|
||||||
|
<polygon fill="#ebcef2" stroke="transparent" points="3361,-2030 3361,-2049 3439,-2049 3439,-2030 3361,-2030" />
|
||||||
|
<text text-anchor="start" x="3400" y="-2035.8" font-family="Helvetica,sans-Serif" font-size="14.00">
|
||||||
|
[table]
|
||||||
|
</text>
|
||||||
|
<text text-anchor="start" x="3233" y="-2017.8" font-family="Helvetica,sans-Serif" font-weight="bold" font-style="italic" font-size="14.00">
|
||||||
|
tld
|
||||||
|
</text>
|
||||||
|
<text text-anchor="start" x="3317" y="-2016.8" font-family="Helvetica,sans-Serif" font-size="14.00">
|
||||||
|
</text>
|
||||||
|
<text text-anchor="start" x="3363" y="-2016.8" font-family="Helvetica,sans-Serif" font-size="14.00">
|
||||||
|
text not null
|
||||||
|
</text>
|
||||||
|
<text text-anchor="start" x="3233" y="-1998.8" font-family="Helvetica,sans-Serif" font-weight="bold" font-style="italic" font-size="14.00">
|
||||||
|
mode
|
||||||
|
</text>
|
||||||
|
<text text-anchor="start" x="3317" y="-1997.8" font-family="Helvetica,sans-Serif" font-size="14.00">
|
||||||
|
</text>
|
||||||
|
<text text-anchor="start" x="3363" y="-1997.8" font-family="Helvetica,sans-Serif" font-size="14.00">
|
||||||
|
text not null
|
||||||
|
</text>
|
||||||
|
<text text-anchor="start" x="3233" y="-1979.8" font-family="Helvetica,sans-Serif" font-weight="bold" font-style="italic" font-size="14.00">
|
||||||
|
"date"
|
||||||
|
</text>
|
||||||
|
<text text-anchor="start" x="3317" y="-1978.8" font-family="Helvetica,sans-Serif" font-size="14.00">
|
||||||
|
</text>
|
||||||
|
<text text-anchor="start" x="3363" y="-1978.8" font-family="Helvetica,sans-Serif" font-size="14.00">
|
||||||
|
date not null
|
||||||
|
</text>
|
||||||
|
<polygon fill="none" stroke="#888888" points="3230,-1972 3230,-2050 3440,-2050 3440,-1972 3230,-1972" />
|
||||||
</g> <!-- registrarpoc_ab47054d -->
|
</g> <!-- registrarpoc_ab47054d -->
|
||||||
<g id="node24" class="node">
|
<g id="node25" class="node">
|
||||||
<title>registrarpoc_ab47054d</title>
|
<title>registrarpoc_ab47054d</title>
|
||||||
<polygon fill="#ebcef2" stroke="transparent" points="3232,-2030 3232,-2049 3364,-2049 3364,-2030 3232,-2030" />
|
<polygon fill="#ebcef2" stroke="transparent" points="3232,-2134 3232,-2153 3364,-2153 3364,-2134 3232,-2134" />
|
||||||
<text text-anchor="start" x="3234" y="-2036.8" font-family="Helvetica,sans-Serif" font-weight="bold" font-style="italic" font-size="14.00">
|
<text text-anchor="start" x="3234" y="-2140.8" font-family="Helvetica,sans-Serif" font-weight="bold" font-style="italic" font-size="14.00">
|
||||||
public.RegistrarPoc
|
public.RegistrarPoc
|
||||||
</text>
|
</text>
|
||||||
<polygon fill="#ebcef2" stroke="transparent" points="3364,-2030 3364,-2049 3438,-2049 3438,-2030 3364,-2030" />
|
<polygon fill="#ebcef2" stroke="transparent" points="3364,-2134 3364,-2153 3438,-2153 3438,-2134 3364,-2134" />
|
||||||
<text text-anchor="start" x="3399" y="-2035.8" font-family="Helvetica,sans-Serif" font-size="14.00">
|
<text text-anchor="start" x="3399" y="-2139.8" font-family="Helvetica,sans-Serif" font-size="14.00">
|
||||||
[table]
|
[table]
|
||||||
</text>
|
</text>
|
||||||
<text text-anchor="start" x="3234" y="-2017.8" font-family="Helvetica,sans-Serif" font-weight="bold" font-style="italic" font-size="14.00">
|
<text text-anchor="start" x="3234" y="-2121.8" font-family="Helvetica,sans-Serif" font-weight="bold" font-style="italic" font-size="14.00">
|
||||||
email_address
|
email_address
|
||||||
</text>
|
</text>
|
||||||
<text text-anchor="start" x="3345" y="-2016.8" font-family="Helvetica,sans-Serif" font-size="14.00">
|
<text text-anchor="start" x="3345" y="-2120.8" font-family="Helvetica,sans-Serif" font-size="14.00">
|
||||||
</text>
|
</text>
|
||||||
<text text-anchor="start" x="3366" y="-2016.8" font-family="Helvetica,sans-Serif" font-size="14.00">
|
<text text-anchor="start" x="3366" y="-2120.8" font-family="Helvetica,sans-Serif" font-size="14.00">
|
||||||
text not null
|
text not null
|
||||||
</text>
|
</text>
|
||||||
<text text-anchor="start" x="3234" y="-1997.8" font-family="Helvetica,sans-Serif" font-size="14.00">
|
<text text-anchor="start" x="3234" y="-2101.8" font-family="Helvetica,sans-Serif" font-size="14.00">
|
||||||
gae_user_id
|
gae_user_id
|
||||||
</text>
|
</text>
|
||||||
<text text-anchor="start" x="3345" y="-1997.8" font-family="Helvetica,sans-Serif" font-size="14.00">
|
<text text-anchor="start" x="3345" y="-2101.8" font-family="Helvetica,sans-Serif" font-size="14.00">
|
||||||
</text>
|
</text>
|
||||||
<text text-anchor="start" x="3366" y="-1997.8" font-family="Helvetica,sans-Serif" font-size="14.00">
|
<text text-anchor="start" x="3366" y="-2101.8" font-family="Helvetica,sans-Serif" font-size="14.00">
|
||||||
text
|
text
|
||||||
</text>
|
</text>
|
||||||
<text text-anchor="start" x="3234" y="-1979.8" font-family="Helvetica,sans-Serif" font-weight="bold" font-style="italic" font-size="14.00">
|
<text text-anchor="start" x="3234" y="-2083.8" font-family="Helvetica,sans-Serif" font-weight="bold" font-style="italic" font-size="14.00">
|
||||||
registrar_id
|
registrar_id
|
||||||
</text>
|
</text>
|
||||||
<text text-anchor="start" x="3345" y="-1978.8" font-family="Helvetica,sans-Serif" font-size="14.00">
|
<text text-anchor="start" x="3345" y="-2082.8" font-family="Helvetica,sans-Serif" font-size="14.00">
|
||||||
</text>
|
</text>
|
||||||
<text text-anchor="start" x="3366" y="-1978.8" font-family="Helvetica,sans-Serif" font-size="14.00">
|
<text text-anchor="start" x="3366" y="-2082.8" font-family="Helvetica,sans-Serif" font-size="14.00">
|
||||||
text not null
|
text not null
|
||||||
</text>
|
</text>
|
||||||
<polygon fill="none" stroke="#888888" points="3231,-1972 3231,-2050 3439,-2050 3439,-1972 3231,-1972" />
|
<polygon fill="none" stroke="#888888" points="3231,-2076 3231,-2154 3439,-2154 3439,-2076 3231,-2076" />
|
||||||
</g> <!-- registrylock_ac88663e -->
|
</g> <!-- registrylock_ac88663e -->
|
||||||
<g id="node25" class="node">
|
<g id="node26" class="node">
|
||||||
<title>registrylock_ac88663e</title>
|
<title>registrylock_ac88663e</title>
|
||||||
<polygon fill="#ebcef2" stroke="transparent" points="3213,-2191 3213,-2210 3347,-2210 3347,-2191 3213,-2191" />
|
<polygon fill="#ebcef2" stroke="transparent" points="3213,-2295 3213,-2314 3347,-2314 3347,-2295 3213,-2295" />
|
||||||
<text text-anchor="start" x="3215" y="-2197.8" font-family="Helvetica,sans-Serif" font-weight="bold" font-style="italic" font-size="14.00">
|
<text text-anchor="start" x="3215" y="-2301.8" font-family="Helvetica,sans-Serif" font-weight="bold" font-style="italic" font-size="14.00">
|
||||||
public.RegistryLock
|
public.RegistryLock
|
||||||
</text>
|
</text>
|
||||||
<polygon fill="#ebcef2" stroke="transparent" points="3347,-2191 3347,-2210 3457,-2210 3457,-2191 3347,-2191" />
|
<polygon fill="#ebcef2" stroke="transparent" points="3347,-2295 3347,-2314 3457,-2314 3457,-2295 3347,-2295" />
|
||||||
<text text-anchor="start" x="3418" y="-2196.8" font-family="Helvetica,sans-Serif" font-size="14.00">
|
<text text-anchor="start" x="3418" y="-2300.8" font-family="Helvetica,sans-Serif" font-size="14.00">
|
||||||
[table]
|
[table]
|
||||||
</text>
|
</text>
|
||||||
<text text-anchor="start" x="3215" y="-2178.8" font-family="Helvetica,sans-Serif" font-weight="bold" font-style="italic" font-size="14.00">
|
<text text-anchor="start" x="3215" y="-2282.8" font-family="Helvetica,sans-Serif" font-weight="bold" font-style="italic" font-size="14.00">
|
||||||
revision_id
|
revision_id
|
||||||
</text>
|
</text>
|
||||||
<text text-anchor="start" x="3334" y="-2177.8" font-family="Helvetica,sans-Serif" font-size="14.00">
|
<text text-anchor="start" x="3334" y="-2281.8" font-family="Helvetica,sans-Serif" font-size="14.00">
|
||||||
</text>
|
</text>
|
||||||
<text text-anchor="start" x="3349" y="-2177.8" font-family="Helvetica,sans-Serif" font-size="14.00">
|
<text text-anchor="start" x="3349" y="-2281.8" font-family="Helvetica,sans-Serif" font-size="14.00">
|
||||||
bigserial not null
|
bigserial not null
|
||||||
</text>
|
</text>
|
||||||
<text text-anchor="start" x="3334" y="-2158.8" font-family="Helvetica,sans-Serif" font-size="14.00">
|
<text text-anchor="start" x="3334" y="-2262.8" font-family="Helvetica,sans-Serif" font-size="14.00">
|
||||||
</text>
|
</text>
|
||||||
<text text-anchor="start" x="3349" y="-2158.8" font-family="Helvetica,sans-Serif" font-size="14.00">
|
<text text-anchor="start" x="3349" y="-2262.8" font-family="Helvetica,sans-Serif" font-size="14.00">
|
||||||
auto-incremented
|
auto-incremented
|
||||||
</text>
|
</text>
|
||||||
<text text-anchor="start" x="3215" y="-2139.8" font-family="Helvetica,sans-Serif" font-size="14.00">
|
<text text-anchor="start" x="3215" y="-2243.8" font-family="Helvetica,sans-Serif" font-size="14.00">
|
||||||
registrar_id
|
registrar_id
|
||||||
</text>
|
</text>
|
||||||
<text text-anchor="start" x="3334" y="-2139.8" font-family="Helvetica,sans-Serif" font-size="14.00">
|
<text text-anchor="start" x="3334" y="-2243.8" font-family="Helvetica,sans-Serif" font-size="14.00">
|
||||||
</text>
|
</text>
|
||||||
<text text-anchor="start" x="3349" y="-2139.8" font-family="Helvetica,sans-Serif" font-size="14.00">
|
<text text-anchor="start" x="3349" y="-2243.8" font-family="Helvetica,sans-Serif" font-size="14.00">
|
||||||
text not null
|
text not null
|
||||||
</text>
|
</text>
|
||||||
<text text-anchor="start" x="3215" y="-2120.8" font-family="Helvetica,sans-Serif" font-size="14.00">
|
<text text-anchor="start" x="3215" y="-2224.8" font-family="Helvetica,sans-Serif" font-size="14.00">
|
||||||
repo_id
|
repo_id
|
||||||
</text>
|
</text>
|
||||||
<text text-anchor="start" x="3334" y="-2120.8" font-family="Helvetica,sans-Serif" font-size="14.00">
|
<text text-anchor="start" x="3334" y="-2224.8" font-family="Helvetica,sans-Serif" font-size="14.00">
|
||||||
</text>
|
</text>
|
||||||
<text text-anchor="start" x="3349" y="-2120.8" font-family="Helvetica,sans-Serif" font-size="14.00">
|
<text text-anchor="start" x="3349" y="-2224.8" font-family="Helvetica,sans-Serif" font-size="14.00">
|
||||||
text not null
|
text not null
|
||||||
</text>
|
</text>
|
||||||
<text text-anchor="start" x="3215" y="-2101.8" font-family="Helvetica,sans-Serif" font-size="14.00">
|
<text text-anchor="start" x="3215" y="-2205.8" font-family="Helvetica,sans-Serif" font-size="14.00">
|
||||||
verification_code
|
verification_code
|
||||||
</text>
|
</text>
|
||||||
<text text-anchor="start" x="3334" y="-2101.8" font-family="Helvetica,sans-Serif" font-size="14.00">
|
<text text-anchor="start" x="3334" y="-2205.8" font-family="Helvetica,sans-Serif" font-size="14.00">
|
||||||
</text>
|
</text>
|
||||||
<text text-anchor="start" x="3349" y="-2101.8" font-family="Helvetica,sans-Serif" font-size="14.00">
|
<text text-anchor="start" x="3349" y="-2205.8" font-family="Helvetica,sans-Serif" font-size="14.00">
|
||||||
text not null
|
text not null
|
||||||
</text>
|
</text>
|
||||||
<text text-anchor="start" x="3215" y="-2082.8" font-family="Helvetica,sans-Serif" font-size="14.00">
|
<text text-anchor="start" x="3215" y="-2186.8" font-family="Helvetica,sans-Serif" font-size="14.00">
|
||||||
relock_revision_id
|
relock_revision_id
|
||||||
</text>
|
</text>
|
||||||
<text text-anchor="start" x="3334" y="-2082.8" font-family="Helvetica,sans-Serif" font-size="14.00">
|
<text text-anchor="start" x="3334" y="-2186.8" font-family="Helvetica,sans-Serif" font-size="14.00">
|
||||||
</text>
|
</text>
|
||||||
<text text-anchor="start" x="3349" y="-2082.8" font-family="Helvetica,sans-Serif" font-size="14.00">
|
<text text-anchor="start" x="3349" y="-2186.8" font-family="Helvetica,sans-Serif" font-size="14.00">
|
||||||
int8
|
int8
|
||||||
</text>
|
</text>
|
||||||
<polygon fill="none" stroke="#888888" points="3212,-2076.5 3212,-2211.5 3458,-2211.5 3458,-2076.5 3212,-2076.5" />
|
<polygon fill="none" stroke="#888888" points="3212,-2180.5 3212,-2315.5 3458,-2315.5 3458,-2180.5 3212,-2180.5" />
|
||||||
</g> <!-- registrylock_ac88663e->registrylock_ac88663e -->
|
</g> <!-- registrylock_ac88663e->registrylock_ac88663e -->
|
||||||
<g id="edge58" class="edge">
|
<g id="edge58" class="edge">
|
||||||
<title>registrylock_ac88663e:w->registrylock_ac88663e:e</title>
|
<title>registrylock_ac88663e:w->registrylock_ac88663e:e</title>
|
||||||
<path fill="none" stroke="black" d="M3197.38,-2095.25C3146.34,-2134.77 3160.96,-2233.5 3335,-2233.5 3515.72,-2233.5 3524.55,-2213.9 3466.46,-2186.31" />
|
<path fill="none" stroke="black" d="M3197.38,-2199.25C3146.34,-2238.77 3160.96,-2337.5 3335,-2337.5 3515.72,-2337.5 3524.55,-2317.9 3466.46,-2290.31" />
|
||||||
<polygon fill="black" stroke="black" points="3204.4,-2091.1 3215.29,-2089.87 3208.7,-2088.55 3213,-2086 3213,-2086 3213,-2086 3208.7,-2088.55 3210.71,-2082.13 3204.4,-2091.1 3204.4,-2091.1" />
|
<polygon fill="black" stroke="black" points="3204.4,-2195.1 3215.29,-2193.87 3208.7,-2192.55 3213,-2190 3213,-2190 3213,-2190 3208.7,-2192.55 3210.71,-2186.13 3204.4,-2195.1 3204.4,-2195.1" />
|
||||||
<ellipse fill="none" stroke="black" cx="3200.95" cy="-2093.14" rx="4" ry="4" />
|
<ellipse fill="none" stroke="black" cx="3200.95" cy="-2197.14" rx="4" ry="4" />
|
||||||
<polygon fill="black" stroke="black" points="3455.84,-2186.96 3459.98,-2177.86 3461.8,-2178.69 3457.66,-2187.79 3455.84,-2186.96" />
|
<polygon fill="black" stroke="black" points="3455.84,-2290.96 3459.98,-2281.86 3461.8,-2282.69 3457.66,-2291.79 3455.84,-2290.96" />
|
||||||
<polyline fill="none" stroke="black" points="3457,-2182 3461.55,-2184.07 " />
|
<polyline fill="none" stroke="black" points="3457,-2286 3461.55,-2288.07 " />
|
||||||
<polygon fill="black" stroke="black" points="3460.39,-2189.04 3464.53,-2179.94 3466.35,-2180.77 3462.21,-2189.87 3460.39,-2189.04" />
|
<polygon fill="black" stroke="black" points="3460.39,-2293.04 3464.53,-2283.94 3466.35,-2284.77 3462.21,-2293.87 3460.39,-2293.04" />
|
||||||
<polyline fill="none" stroke="black" points="3461.55,-2184.07 3466.1,-2186.15 " />
|
<polyline fill="none" stroke="black" points="3461.55,-2288.07 3466.1,-2290.15 " />
|
||||||
<text text-anchor="start" x="3253.5" y="-2237.3" font-family="Helvetica,sans-Serif" font-size="14.00">
|
<text text-anchor="start" x="3253.5" y="-2341.3" font-family="Helvetica,sans-Serif" font-size="14.00">
|
||||||
fk2lhcwpxlnqijr96irylrh1707
|
fk2lhcwpxlnqijr96irylrh1707
|
||||||
</text>
|
</text>
|
||||||
</g> <!-- reservedentry_1a7b8520 -->
|
</g> <!-- reservedentry_1a7b8520 -->
|
||||||
<g id="node26" class="node">
|
<g id="node27" class="node">
|
||||||
<title>reservedentry_1a7b8520</title>
|
<title>reservedentry_1a7b8520</title>
|
||||||
<polygon fill="#ebcef2" stroke="transparent" points="3227,-2309 3227,-2328 3370,-2328 3370,-2309 3227,-2309" />
|
<polygon fill="#ebcef2" stroke="transparent" points="3227,-2413 3227,-2432 3370,-2432 3370,-2413 3227,-2413" />
|
||||||
<text text-anchor="start" x="3229" y="-2315.8" font-family="Helvetica,sans-Serif" font-weight="bold" font-style="italic" font-size="14.00">
|
<text text-anchor="start" x="3229" y="-2419.8" font-family="Helvetica,sans-Serif" font-weight="bold" font-style="italic" font-size="14.00">
|
||||||
public.ReservedEntry
|
public.ReservedEntry
|
||||||
</text>
|
</text>
|
||||||
<polygon fill="#ebcef2" stroke="transparent" points="3370,-2309 3370,-2328 3444,-2328 3444,-2309 3370,-2309" />
|
<polygon fill="#ebcef2" stroke="transparent" points="3370,-2413 3370,-2432 3444,-2432 3444,-2413 3370,-2413" />
|
||||||
<text text-anchor="start" x="3405" y="-2314.8" font-family="Helvetica,sans-Serif" font-size="14.00">
|
<text text-anchor="start" x="3405" y="-2418.8" font-family="Helvetica,sans-Serif" font-size="14.00">
|
||||||
[table]
|
[table]
|
||||||
</text>
|
</text>
|
||||||
<text text-anchor="start" x="3229" y="-2296.8" font-family="Helvetica,sans-Serif" font-weight="bold" font-style="italic" font-size="14.00">
|
<text text-anchor="start" x="3229" y="-2400.8" font-family="Helvetica,sans-Serif" font-weight="bold" font-style="italic" font-size="14.00">
|
||||||
revision_id
|
revision_id
|
||||||
</text>
|
</text>
|
||||||
<text text-anchor="start" x="3342" y="-2295.8" font-family="Helvetica,sans-Serif" font-size="14.00">
|
<text text-anchor="start" x="3342" y="-2399.8" font-family="Helvetica,sans-Serif" font-size="14.00">
|
||||||
</text>
|
</text>
|
||||||
<text text-anchor="start" x="3372" y="-2295.8" font-family="Helvetica,sans-Serif" font-size="14.00">
|
<text text-anchor="start" x="3372" y="-2399.8" font-family="Helvetica,sans-Serif" font-size="14.00">
|
||||||
int8 not null
|
int8 not null
|
||||||
</text>
|
</text>
|
||||||
<text text-anchor="start" x="3229" y="-2277.8" font-family="Helvetica,sans-Serif" font-weight="bold" font-style="italic" font-size="14.00">
|
<text text-anchor="start" x="3229" y="-2381.8" font-family="Helvetica,sans-Serif" font-weight="bold" font-style="italic" font-size="14.00">
|
||||||
domain_label
|
domain_label
|
||||||
</text>
|
</text>
|
||||||
<text text-anchor="start" x="3342" y="-2276.8" font-family="Helvetica,sans-Serif" font-size="14.00">
|
<text text-anchor="start" x="3342" y="-2380.8" font-family="Helvetica,sans-Serif" font-size="14.00">
|
||||||
</text>
|
</text>
|
||||||
<text text-anchor="start" x="3372" y="-2276.8" font-family="Helvetica,sans-Serif" font-size="14.00">
|
<text text-anchor="start" x="3372" y="-2380.8" font-family="Helvetica,sans-Serif" font-size="14.00">
|
||||||
text not null
|
text not null
|
||||||
</text>
|
</text>
|
||||||
<polygon fill="none" stroke="#888888" points="3225.5,-2270.5 3225.5,-2329.5 3444.5,-2329.5 3444.5,-2270.5 3225.5,-2270.5" />
|
<polygon fill="none" stroke="#888888" points="3225.5,-2374.5 3225.5,-2433.5 3444.5,-2433.5 3444.5,-2374.5 3225.5,-2374.5" />
|
||||||
</g> <!-- reservedlist_b97c3f1c -->
|
</g> <!-- reservedlist_b97c3f1c -->
|
||||||
<g id="node27" class="node">
|
<g id="node28" class="node">
|
||||||
<title>reservedlist_b97c3f1c</title>
|
<title>reservedlist_b97c3f1c</title>
|
||||||
<polygon fill="#ebcef2" stroke="transparent" points="2650.5,-2308 2650.5,-2327 2783.5,-2327 2783.5,-2308 2650.5,-2308" />
|
<polygon fill="#ebcef2" stroke="transparent" points="2650.5,-2412 2650.5,-2431 2783.5,-2431 2783.5,-2412 2650.5,-2412" />
|
||||||
<text text-anchor="start" x="2652.5" y="-2314.8" font-family="Helvetica,sans-Serif" font-weight="bold" font-style="italic" font-size="14.00">
|
<text text-anchor="start" x="2652.5" y="-2418.8" font-family="Helvetica,sans-Serif" font-weight="bold" font-style="italic" font-size="14.00">
|
||||||
public.ReservedList
|
public.ReservedList
|
||||||
</text>
|
</text>
|
||||||
<polygon fill="#ebcef2" stroke="transparent" points="2783.5,-2308 2783.5,-2327 2893.5,-2327 2893.5,-2308 2783.5,-2308" />
|
<polygon fill="#ebcef2" stroke="transparent" points="2783.5,-2412 2783.5,-2431 2893.5,-2431 2893.5,-2412 2783.5,-2412" />
|
||||||
<text text-anchor="start" x="2854.5" y="-2313.8" font-family="Helvetica,sans-Serif" font-size="14.00">
|
<text text-anchor="start" x="2854.5" y="-2417.8" font-family="Helvetica,sans-Serif" font-size="14.00">
|
||||||
[table]
|
[table]
|
||||||
</text>
|
</text>
|
||||||
<text text-anchor="start" x="2652.5" y="-2295.8" font-family="Helvetica,sans-Serif" font-weight="bold" font-style="italic" font-size="14.00">
|
<text text-anchor="start" x="2652.5" y="-2399.8" font-family="Helvetica,sans-Serif" font-weight="bold" font-style="italic" font-size="14.00">
|
||||||
revision_id
|
revision_id
|
||||||
</text>
|
</text>
|
||||||
<text text-anchor="start" x="2752.5" y="-2294.8" font-family="Helvetica,sans-Serif" font-size="14.00">
|
<text text-anchor="start" x="2752.5" y="-2398.8" font-family="Helvetica,sans-Serif" font-size="14.00">
|
||||||
</text>
|
</text>
|
||||||
<text text-anchor="start" x="2785.5" y="-2294.8" font-family="Helvetica,sans-Serif" font-size="14.00">
|
<text text-anchor="start" x="2785.5" y="-2398.8" font-family="Helvetica,sans-Serif" font-size="14.00">
|
||||||
bigserial not null
|
bigserial not null
|
||||||
</text>
|
</text>
|
||||||
<text text-anchor="start" x="2752.5" y="-2275.8" font-family="Helvetica,sans-Serif" font-size="14.00">
|
<text text-anchor="start" x="2752.5" y="-2379.8" font-family="Helvetica,sans-Serif" font-size="14.00">
|
||||||
</text>
|
</text>
|
||||||
<text text-anchor="start" x="2785.5" y="-2275.8" font-family="Helvetica,sans-Serif" font-size="14.00">
|
<text text-anchor="start" x="2785.5" y="-2379.8" font-family="Helvetica,sans-Serif" font-size="14.00">
|
||||||
auto-incremented
|
auto-incremented
|
||||||
</text>
|
</text>
|
||||||
<text text-anchor="start" x="2652.5" y="-2256.8" font-family="Helvetica,sans-Serif" font-size="14.00">
|
<text text-anchor="start" x="2652.5" y="-2360.8" font-family="Helvetica,sans-Serif" font-size="14.00">
|
||||||
name
|
name
|
||||||
</text>
|
</text>
|
||||||
<text text-anchor="start" x="2752.5" y="-2256.8" font-family="Helvetica,sans-Serif" font-size="14.00">
|
<text text-anchor="start" x="2752.5" y="-2360.8" font-family="Helvetica,sans-Serif" font-size="14.00">
|
||||||
</text>
|
</text>
|
||||||
<text text-anchor="start" x="2785.5" y="-2256.8" font-family="Helvetica,sans-Serif" font-size="14.00">
|
<text text-anchor="start" x="2785.5" y="-2360.8" font-family="Helvetica,sans-Serif" font-size="14.00">
|
||||||
text not null
|
text not null
|
||||||
</text>
|
</text>
|
||||||
<polygon fill="none" stroke="#888888" points="2649,-2250 2649,-2328 2894,-2328 2894,-2250 2649,-2250" />
|
<polygon fill="none" stroke="#888888" points="2649,-2354 2649,-2432 2894,-2432 2894,-2354 2649,-2354" />
|
||||||
</g> <!-- reservedentry_1a7b8520->reservedlist_b97c3f1c -->
|
</g> <!-- reservedentry_1a7b8520->reservedlist_b97c3f1c -->
|
||||||
<g id="edge59" class="edge">
|
<g id="edge59" class="edge">
|
||||||
<title>reservedentry_1a7b8520:w->reservedlist_b97c3f1c:e</title>
|
<title>reservedentry_1a7b8520:w->reservedlist_b97c3f1c:e</title>
|
||||||
<path fill="none" stroke="black" d="M3207.6,-2299C3078.53,-2299 3037.5,-2299 2904.65,-2299" />
|
<path fill="none" stroke="black" d="M3207.6,-2403C3078.53,-2403 3037.5,-2403 2904.65,-2403" />
|
||||||
<polygon fill="black" stroke="black" points="3216,-2299 3226,-2303.5 3221,-2299 3226,-2299 3226,-2299 3226,-2299 3221,-2299 3226,-2294.5 3216,-2299 3216,-2299" />
|
<polygon fill="black" stroke="black" points="3216,-2403 3226,-2407.5 3221,-2403 3226,-2403 3226,-2403 3226,-2403 3221,-2403 3226,-2398.5 3216,-2403 3216,-2403" />
|
||||||
<ellipse fill="none" stroke="black" cx="3212" cy="-2299" rx="4" ry="4" />
|
<ellipse fill="none" stroke="black" cx="3212" cy="-2403" rx="4" ry="4" />
|
||||||
<polygon fill="black" stroke="black" points="2895.5,-2304 2895.5,-2294 2897.5,-2294 2897.5,-2304 2895.5,-2304" />
|
<polygon fill="black" stroke="black" points="2895.5,-2408 2895.5,-2398 2897.5,-2398 2897.5,-2408 2895.5,-2408" />
|
||||||
<polyline fill="none" stroke="black" points="2894.5,-2299 2899.5,-2299 " />
|
<polyline fill="none" stroke="black" points="2894.5,-2403 2899.5,-2403 " />
|
||||||
<polygon fill="black" stroke="black" points="2900.5,-2304 2900.5,-2294 2902.5,-2294 2902.5,-2304 2900.5,-2304" />
|
<polygon fill="black" stroke="black" points="2900.5,-2408 2900.5,-2398 2902.5,-2398 2902.5,-2408 2900.5,-2408" />
|
||||||
<polyline fill="none" stroke="black" points="2899.5,-2299 2904.5,-2299 " />
|
<polyline fill="none" stroke="black" points="2899.5,-2403 2904.5,-2403 " />
|
||||||
<text text-anchor="start" x="2970.5" y="-2302.8" font-family="Helvetica,sans-Serif" font-size="14.00">
|
<text text-anchor="start" x="2970.5" y="-2406.8" font-family="Helvetica,sans-Serif" font-size="14.00">
|
||||||
fkgq03rk0bt1hb915dnyvd3vnfc
|
fkgq03rk0bt1hb915dnyvd3vnfc
|
||||||
</text>
|
</text>
|
||||||
</g> <!-- spec11threatmatch_a61228a6 -->
|
</g> <!-- spec11threatmatch_a61228a6 -->
|
||||||
<g id="node28" class="node">
|
<g id="node29" class="node">
|
||||||
<title>spec11threatmatch_a61228a6</title>
|
<title>spec11threatmatch_a61228a6</title>
|
||||||
<polygon fill="#ebcef2" stroke="transparent" points="3192,-2452 3192,-2471 3368,-2471 3368,-2452 3192,-2452" />
|
<polygon fill="#ebcef2" stroke="transparent" points="3192,-2556 3192,-2575 3368,-2575 3368,-2556 3192,-2556" />
|
||||||
<text text-anchor="start" x="3194" y="-2458.8" font-family="Helvetica,sans-Serif" font-weight="bold" font-style="italic" font-size="14.00">
|
<text text-anchor="start" x="3194" y="-2562.8" font-family="Helvetica,sans-Serif" font-weight="bold" font-style="italic" font-size="14.00">
|
||||||
public.Spec11ThreatMatch
|
public.Spec11ThreatMatch
|
||||||
</text>
|
</text>
|
||||||
<polygon fill="#ebcef2" stroke="transparent" points="3368,-2452 3368,-2471 3478,-2471 3478,-2452 3368,-2452" />
|
<polygon fill="#ebcef2" stroke="transparent" points="3368,-2556 3368,-2575 3478,-2575 3478,-2556 3368,-2556" />
|
||||||
<text text-anchor="start" x="3439" y="-2457.8" font-family="Helvetica,sans-Serif" font-size="14.00">
|
<text text-anchor="start" x="3439" y="-2561.8" font-family="Helvetica,sans-Serif" font-size="14.00">
|
||||||
[table]
|
[table]
|
||||||
</text>
|
</text>
|
||||||
<text text-anchor="start" x="3194" y="-2439.8" font-family="Helvetica,sans-Serif" font-weight="bold" font-style="italic" font-size="14.00">
|
<text text-anchor="start" x="3194" y="-2543.8" font-family="Helvetica,sans-Serif" font-weight="bold" font-style="italic" font-size="14.00">
|
||||||
id
|
id
|
||||||
</text>
|
</text>
|
||||||
<text text-anchor="start" x="3315" y="-2438.8" font-family="Helvetica,sans-Serif" font-size="14.00">
|
<text text-anchor="start" x="3315" y="-2542.8" font-family="Helvetica,sans-Serif" font-size="14.00">
|
||||||
</text>
|
</text>
|
||||||
<text text-anchor="start" x="3370" y="-2438.8" font-family="Helvetica,sans-Serif" font-size="14.00">
|
<text text-anchor="start" x="3370" y="-2542.8" font-family="Helvetica,sans-Serif" font-size="14.00">
|
||||||
bigserial not null
|
bigserial not null
|
||||||
</text>
|
</text>
|
||||||
<text text-anchor="start" x="3315" y="-2419.8" font-family="Helvetica,sans-Serif" font-size="14.00">
|
<text text-anchor="start" x="3315" y="-2523.8" font-family="Helvetica,sans-Serif" font-size="14.00">
|
||||||
</text>
|
</text>
|
||||||
<text text-anchor="start" x="3370" y="-2419.8" font-family="Helvetica,sans-Serif" font-size="14.00">
|
<text text-anchor="start" x="3370" y="-2523.8" font-family="Helvetica,sans-Serif" font-size="14.00">
|
||||||
auto-incremented
|
auto-incremented
|
||||||
</text>
|
</text>
|
||||||
<text text-anchor="start" x="3194" y="-2400.8" font-family="Helvetica,sans-Serif" font-size="14.00">
|
<text text-anchor="start" x="3194" y="-2504.8" font-family="Helvetica,sans-Serif" font-size="14.00">
|
||||||
check_date
|
check_date
|
||||||
</text>
|
</text>
|
||||||
<text text-anchor="start" x="3315" y="-2400.8" font-family="Helvetica,sans-Serif" font-size="14.00">
|
<text text-anchor="start" x="3315" y="-2504.8" font-family="Helvetica,sans-Serif" font-size="14.00">
|
||||||
</text>
|
</text>
|
||||||
<text text-anchor="start" x="3370" y="-2400.8" font-family="Helvetica,sans-Serif" font-size="14.00">
|
<text text-anchor="start" x="3370" y="-2504.8" font-family="Helvetica,sans-Serif" font-size="14.00">
|
||||||
date not null
|
date not null
|
||||||
</text>
|
</text>
|
||||||
<text text-anchor="start" x="3194" y="-2381.8" font-family="Helvetica,sans-Serif" font-size="14.00">
|
<text text-anchor="start" x="3194" y="-2485.8" font-family="Helvetica,sans-Serif" font-size="14.00">
|
||||||
registrar_id
|
registrar_id
|
||||||
</text>
|
</text>
|
||||||
<text text-anchor="start" x="3315" y="-2381.8" font-family="Helvetica,sans-Serif" font-size="14.00">
|
<text text-anchor="start" x="3315" y="-2485.8" font-family="Helvetica,sans-Serif" font-size="14.00">
|
||||||
</text>
|
</text>
|
||||||
<text text-anchor="start" x="3370" y="-2381.8" font-family="Helvetica,sans-Serif" font-size="14.00">
|
<text text-anchor="start" x="3370" y="-2485.8" font-family="Helvetica,sans-Serif" font-size="14.00">
|
||||||
text not null
|
text not null
|
||||||
</text>
|
</text>
|
||||||
<text text-anchor="start" x="3194" y="-2362.8" font-family="Helvetica,sans-Serif" font-size="14.00">
|
<text text-anchor="start" x="3194" y="-2466.8" font-family="Helvetica,sans-Serif" font-size="14.00">
|
||||||
tld
|
tld
|
||||||
</text>
|
</text>
|
||||||
<text text-anchor="start" x="3315" y="-2362.8" font-family="Helvetica,sans-Serif" font-size="14.00">
|
<text text-anchor="start" x="3315" y="-2466.8" font-family="Helvetica,sans-Serif" font-size="14.00">
|
||||||
</text>
|
</text>
|
||||||
<text text-anchor="start" x="3370" y="-2362.8" font-family="Helvetica,sans-Serif" font-size="14.00">
|
<text text-anchor="start" x="3370" y="-2466.8" font-family="Helvetica,sans-Serif" font-size="14.00">
|
||||||
text not null
|
text not null
|
||||||
</text>
|
</text>
|
||||||
<polygon fill="none" stroke="#888888" points="3191,-2356 3191,-2472 3479,-2472 3479,-2356 3191,-2356" />
|
<polygon fill="none" stroke="#888888" points="3191,-2460 3191,-2576 3479,-2576 3479,-2460 3191,-2460" />
|
||||||
</g> <!-- tld_f1fa57e2 -->
|
</g> <!-- tld_f1fa57e2 -->
|
||||||
<g id="node29" class="node">
|
<g id="node30" class="node">
|
||||||
<title>tld_f1fa57e2</title>
|
<title>tld_f1fa57e2</title>
|
||||||
<polygon fill="#ebcef2" stroke="transparent" points="3262,-2518 3262,-2537 3335,-2537 3335,-2518 3262,-2518" />
|
<polygon fill="#ebcef2" stroke="transparent" points="3262,-2622 3262,-2641 3335,-2641 3335,-2622 3262,-2622" />
|
||||||
<text text-anchor="start" x="3264" y="-2524.8" font-family="Helvetica,sans-Serif" font-weight="bold" font-style="italic" font-size="14.00">
|
<text text-anchor="start" x="3264" y="-2628.8" font-family="Helvetica,sans-Serif" font-weight="bold" font-style="italic" font-size="14.00">
|
||||||
public.Tld
|
public.Tld
|
||||||
</text>
|
</text>
|
||||||
<polygon fill="#ebcef2" stroke="transparent" points="3335,-2518 3335,-2537 3409,-2537 3409,-2518 3335,-2518" />
|
<polygon fill="#ebcef2" stroke="transparent" points="3335,-2622 3335,-2641 3409,-2641 3409,-2622 3335,-2622" />
|
||||||
<text text-anchor="start" x="3370" y="-2523.8" font-family="Helvetica,sans-Serif" font-size="14.00">
|
<text text-anchor="start" x="3370" y="-2627.8" font-family="Helvetica,sans-Serif" font-size="14.00">
|
||||||
[table]
|
[table]
|
||||||
</text>
|
</text>
|
||||||
<text text-anchor="start" x="3264" y="-2505.8" font-family="Helvetica,sans-Serif" font-weight="bold" font-style="italic" font-size="14.00">
|
<text text-anchor="start" x="3264" y="-2609.8" font-family="Helvetica,sans-Serif" font-weight="bold" font-style="italic" font-size="14.00">
|
||||||
tld_name
|
tld_name
|
||||||
</text>
|
</text>
|
||||||
<text text-anchor="start" x="3329" y="-2504.8" font-family="Helvetica,sans-Serif" font-size="14.00">
|
<text text-anchor="start" x="3329" y="-2608.8" font-family="Helvetica,sans-Serif" font-size="14.00">
|
||||||
</text>
|
</text>
|
||||||
<text text-anchor="start" x="3337" y="-2504.8" font-family="Helvetica,sans-Serif" font-size="14.00">
|
<text text-anchor="start" x="3337" y="-2608.8" font-family="Helvetica,sans-Serif" font-size="14.00">
|
||||||
text not null
|
text not null
|
||||||
</text>
|
</text>
|
||||||
<polygon fill="none" stroke="#888888" points="3260.5,-2498 3260.5,-2538 3409.5,-2538 3409.5,-2498 3260.5,-2498" />
|
<polygon fill="none" stroke="#888888" points="3260.5,-2602 3260.5,-2642 3409.5,-2642 3409.5,-2602 3260.5,-2602" />
|
||||||
</g> <!-- transaction_d50389d4 -->
|
</g> <!-- transaction_d50389d4 -->
|
||||||
<g id="node30" class="node">
|
<g id="node31" class="node">
|
||||||
<title>transaction_d50389d4</title>
|
<title>transaction_d50389d4</title>
|
||||||
<polygon fill="#ebcef2" stroke="transparent" points="3218,-2603 3218,-2622 3343,-2622 3343,-2603 3218,-2603" />
|
<polygon fill="#ebcef2" stroke="transparent" points="3218,-2707 3218,-2726 3343,-2726 3343,-2707 3218,-2707" />
|
||||||
<text text-anchor="start" x="3220" y="-2609.8" font-family="Helvetica,sans-Serif" font-weight="bold" font-style="italic" font-size="14.00">
|
<text text-anchor="start" x="3220" y="-2713.8" font-family="Helvetica,sans-Serif" font-weight="bold" font-style="italic" font-size="14.00">
|
||||||
public.Transaction
|
public.Transaction
|
||||||
</text>
|
</text>
|
||||||
<polygon fill="#ebcef2" stroke="transparent" points="3343,-2603 3343,-2622 3453,-2622 3453,-2603 3343,-2603" />
|
<polygon fill="#ebcef2" stroke="transparent" points="3343,-2707 3343,-2726 3453,-2726 3453,-2707 3343,-2707" />
|
||||||
<text text-anchor="start" x="3414" y="-2608.8" font-family="Helvetica,sans-Serif" font-size="14.00">
|
<text text-anchor="start" x="3414" y="-2712.8" font-family="Helvetica,sans-Serif" font-size="14.00">
|
||||||
[table]
|
[table]
|
||||||
</text>
|
</text>
|
||||||
<text text-anchor="start" x="3220" y="-2590.8" font-family="Helvetica,sans-Serif" font-weight="bold" font-style="italic" font-size="14.00">
|
<text text-anchor="start" x="3220" y="-2694.8" font-family="Helvetica,sans-Serif" font-weight="bold" font-style="italic" font-size="14.00">
|
||||||
id
|
id
|
||||||
</text>
|
</text>
|
||||||
<text text-anchor="start" x="3287" y="-2589.8" font-family="Helvetica,sans-Serif" font-size="14.00">
|
<text text-anchor="start" x="3287" y="-2693.8" font-family="Helvetica,sans-Serif" font-size="14.00">
|
||||||
</text>
|
</text>
|
||||||
<text text-anchor="start" x="3345" y="-2589.8" font-family="Helvetica,sans-Serif" font-size="14.00">
|
<text text-anchor="start" x="3345" y="-2693.8" font-family="Helvetica,sans-Serif" font-size="14.00">
|
||||||
bigserial not null
|
bigserial not null
|
||||||
</text>
|
</text>
|
||||||
<text text-anchor="start" x="3287" y="-2570.8" font-family="Helvetica,sans-Serif" font-size="14.00">
|
<text text-anchor="start" x="3287" y="-2674.8" font-family="Helvetica,sans-Serif" font-size="14.00">
|
||||||
</text>
|
</text>
|
||||||
<text text-anchor="start" x="3345" y="-2570.8" font-family="Helvetica,sans-Serif" font-size="14.00">
|
<text text-anchor="start" x="3345" y="-2674.8" font-family="Helvetica,sans-Serif" font-size="14.00">
|
||||||
auto-incremented
|
auto-incremented
|
||||||
</text>
|
</text>
|
||||||
<polygon fill="none" stroke="#888888" points="3216.5,-2564.5 3216.5,-2623.5 3453.5,-2623.5 3453.5,-2564.5 3216.5,-2564.5" />
|
<polygon fill="none" stroke="#888888" points="3216.5,-2668.5 3216.5,-2727.5 3453.5,-2727.5 3453.5,-2668.5 3216.5,-2668.5" />
|
||||||
</g>
|
</g>
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
|
@ -4774,6 +4810,56 @@ td.section {
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
<p> </p>
|
<p> </p>
|
||||||
|
<table>
|
||||||
|
<caption style="background-color: #EBCEF2;"> <span id="rderevision_83396864" class="caption_name">public.RdeRevision</span> <span class="caption_description">[table]</span>
|
||||||
|
</caption>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td class="spacer"></td>
|
||||||
|
<td class="minwidth"><b><i>tld</i></b></td>
|
||||||
|
<td class="minwidth">text not null</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="spacer"></td>
|
||||||
|
<td class="minwidth"><b><i>mode</i></b></td>
|
||||||
|
<td class="minwidth">text not null</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="spacer"></td>
|
||||||
|
<td class="minwidth"><b><i>"date"</i></b></td>
|
||||||
|
<td class="minwidth">date not null</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td colspan="3"></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td colspan="3" class="section">Primary Key</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td colspan="3"></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td colspan="2" class="name">RdeRevision_pkey</td>
|
||||||
|
<td class="description right">[primary key]</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="spacer"></td>
|
||||||
|
<td class="minwidth">tld</td>
|
||||||
|
<td class="minwidth"></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="spacer"></td>
|
||||||
|
<td class="minwidth">mode</td>
|
||||||
|
<td class="minwidth"></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="spacer"></td>
|
||||||
|
<td class="minwidth">"date"</td>
|
||||||
|
<td class="minwidth"></td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
<p> </p>
|
||||||
<table>
|
<table>
|
||||||
<caption style="background-color: #EBCEF2;"> <span id="registrar_6e1503e3" class="caption_name">public.Registrar</span> <span class="caption_description">[table]</span>
|
<caption style="background-color: #EBCEF2;"> <span id="registrar_6e1503e3" class="caption_name">public.Registrar</span> <span class="caption_description">[table]</span>
|
||||||
</caption>
|
</caption>
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -63,3 +63,4 @@ V62__disable_key_auto_generation_for_history_tables.sql
|
||||||
V63__add_schema_for_ds_data.sql
|
V63__add_schema_for_ds_data.sql
|
||||||
V64__transfer_history_columns.sql
|
V64__transfer_history_columns.sql
|
||||||
V65__local_date_date_type.sql
|
V65__local_date_date_type.sql
|
||||||
|
V66__create_rde_revision.sql
|
||||||
|
|
|
@ -0,0 +1,22 @@
|
||||||
|
-- Copyright 2020 The Nomulus Authors. All Rights Reserved.
|
||||||
|
--
|
||||||
|
-- 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.
|
||||||
|
|
||||||
|
CREATE TABLE "RdeRevision" (
|
||||||
|
tld TEXT NOT NULL,
|
||||||
|
mode TEXT NOT NULL,
|
||||||
|
date date NOT NULL,
|
||||||
|
update_timestamp timestamptz,
|
||||||
|
revision int4 NOT NULL,
|
||||||
|
PRIMARY KEY (tld, mode, date)
|
||||||
|
);
|
|
@ -494,6 +494,15 @@
|
||||||
primary key (revision_id)
|
primary key (revision_id)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
create table "RdeRevision" (
|
||||||
|
date date not null,
|
||||||
|
mode text not null,
|
||||||
|
tld text not null,
|
||||||
|
update_timestamp timestamptz,
|
||||||
|
revision int4 not null,
|
||||||
|
primary key (date, mode, tld)
|
||||||
|
);
|
||||||
|
|
||||||
create table "Registrar" (
|
create table "Registrar" (
|
||||||
registrar_id text not null,
|
registrar_id text not null,
|
||||||
allowed_tlds text[],
|
allowed_tlds text[],
|
||||||
|
|
|
@ -682,6 +682,19 @@ CREATE SEQUENCE public."PremiumList_revision_id_seq"
|
||||||
ALTER SEQUENCE public."PremiumList_revision_id_seq" OWNED BY public."PremiumList".revision_id;
|
ALTER SEQUENCE public."PremiumList_revision_id_seq" OWNED BY public."PremiumList".revision_id;
|
||||||
|
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Name: RdeRevision; Type: TABLE; Schema: public; Owner: -
|
||||||
|
--
|
||||||
|
|
||||||
|
CREATE TABLE public."RdeRevision" (
|
||||||
|
tld text NOT NULL,
|
||||||
|
mode text NOT NULL,
|
||||||
|
date date NOT NULL,
|
||||||
|
update_timestamp timestamp with time zone,
|
||||||
|
revision integer NOT NULL
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
--
|
--
|
||||||
-- Name: Registrar; Type: TABLE; Schema: public; Owner: -
|
-- Name: Registrar; Type: TABLE; Schema: public; Owner: -
|
||||||
--
|
--
|
||||||
|
@ -1166,6 +1179,14 @@ ALTER TABLE ONLY public."PremiumList"
|
||||||
ADD CONSTRAINT "PremiumList_pkey" PRIMARY KEY (revision_id);
|
ADD CONSTRAINT "PremiumList_pkey" PRIMARY KEY (revision_id);
|
||||||
|
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Name: RdeRevision RdeRevision_pkey; Type: CONSTRAINT; Schema: public; Owner: -
|
||||||
|
--
|
||||||
|
|
||||||
|
ALTER TABLE ONLY public."RdeRevision"
|
||||||
|
ADD CONSTRAINT "RdeRevision_pkey" PRIMARY KEY (tld, mode, date);
|
||||||
|
|
||||||
|
|
||||||
--
|
--
|
||||||
-- Name: RegistrarPoc RegistrarPoc_pkey; Type: CONSTRAINT; Schema: public; Owner: -
|
-- Name: RegistrarPoc RegistrarPoc_pkey; Type: CONSTRAINT; Schema: public; Owner: -
|
||||||
--
|
--
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue