2023-03-12 16:00:57 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								// GoToSocial  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// Copyright (C) GoToSocial Authors admin@gotosocial.org  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// SPDX-License-Identifier: AGPL-3.0-or-later  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// This program is free software: you can redistribute it and/or modify  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// it under the terms of the GNU Affero General Public License as published by  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// the Free Software Foundation, either version 3 of the License, or  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// (at your option) any later version.  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// This program is distributed in the hope that it will be useful,  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// but WITHOUT ANY WARRANTY; without even the implied warranty of  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// GNU Affero General Public License for more details.  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// You should have received a copy of the GNU Affero General Public License  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// along with this program.  If not, see <http://www.gnu.org/licenses/>.  
						 
					
						
							
								
									
										
										
										
											2021-09-01 18:29:25 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-05-09 14:06:06 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								package  gtsmodel  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								import  "time"  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// Instance represents a federated instance, either local or remote.  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								type  Instance  struct  {  
						 
					
						
							
								
									
										
										
										
											2021-08-31 15:59:12 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ID                      string        ` validate:"required,ulid" bun:"type:CHAR(26),pk,nullzero,notnull,unique" `                      // id of this item in the database 
							 
						 
					
						
							
								
									
										
										
										
											2021-09-20 17:41:52 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									CreatedAt               time . Time     ` validate:"-" bun:"type:timestamptz,nullzero,notnull,default:current_timestamp" `               // when was item created 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									UpdatedAt               time . Time     ` validate:"-" bun:"type:timestamptz,nullzero,notnull,default:current_timestamp" `               // when was item last updated 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-31 15:59:12 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									Domain                  string        ` validate:"required,fqdn" bun:",nullzero,notnull,unique" `                                      // Instance domain eg example.org 
							 
						 
					
						
							
								
									
										
										
										
											2021-09-10 09:08:21 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									Title                   string        ` validate:"-" bun:"" `                                                                          // Title of this instance as it would like to be displayed. 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-31 15:59:12 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									URI                     string        ` validate:"required,url" bun:",nullzero,notnull,unique" `                                       // base URI of this instance eg https://example.org 
							 
						 
					
						
							
								
									
										
										
										
											2021-09-20 17:41:52 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									SuspendedAt             time . Time     ` validate:"-" bun:"type:timestamptz,nullzero" `                                                 // When was this instance suspended, if at all? 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-31 15:59:12 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									DomainBlockID           string        ` validate:"omitempty,ulid" bun:"type:CHAR(26),nullzero" `                                       // ID of any existing domain block for this instance in the database 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									DomainBlock             * DomainBlock  ` validate:"-" bun:"rel:belongs-to" `                                                            // Domain block corresponding to domainBlockID 
							 
						 
					
						
							
								
									
										
										
										
											2021-09-10 09:08:21 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ShortDescription        string        ` validate:"-" bun:"" `                                                                          // Short description of this instance 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Description             string        ` validate:"-" bun:"" `                                                                          // Longer description of this instance 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Terms                   string        ` validate:"-" bun:"" `                                                                          // Terms and conditions of this instance 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ContactEmail            string        ` validate:"omitempty,email" bun:"" `                                                            // Contact email address for this instance 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-31 15:59:12 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ContactAccountUsername  string        ` validate:"required_with=ContactAccountID" bun:",nullzero" `                                    // Username of the contact account for this instance 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ContactAccountID        string        ` validate:"required_with=ContactAccountUsername,omitempty,ulid" bun:"type:CHAR(26),nullzero" `  // Contact account ID in the database for this instance 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ContactAccount          * Account      ` validate:"-" bun:"rel:belongs-to" `                                                            // account corresponding to contactAccountID 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Reputation              int64         ` validate:"-" bun:",notnull,default:0" `                                                        // Reputation score of this instance 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Version                 string        ` validate:"-" bun:",nullzero" `                                                                 // Version of the software used on this instance 
							 
						 
					
						
							
								
									
										
										
										
											2021-05-09 14:06:06 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}