Parar a entidade do grupo de pagamento sentada numa tabela legada
BillingGroup foi mapeado para billing groups. Este quadro já existia — um de Subsistema de sete tabelas (billing group members, assinaturas, licenças, faturas...
Nunca deixe que o serviço de quota impeça um serviço de iniciar
StorageQuotaService tomou seus cinco repositórios como construtor necessário argumentos. Serviços nesta propriedade componente-scan com.kamo com um wildcard mas...
Pin como o pool se divide em limites por caixa de correio
Dovecot precisa de uma figura de byte por caixa de correio, mas o armazenamento é uma organização pool em 18 domínios. A divisão tem de deter uma propriedade ac...
Fazer um pagamento falhado significa alguma coisa
PAST DUE contado como totalmente vivo em ambos os resolvedores de direitos, sem timestamp e sem tampa, de modo que um cliente cujo cartão falhou manteve todos o...
Pin o modo de delegação semântica
Estes predicados são o que as superfícies escondem-se, por isso estão a errar. ou oferece um botão que não pode trabalhar ou permite silenciosamente uma cobranç...
Que os membros e grupos paguem por si mesmos, segundo as regras do proprietário
Faltavam três coisas e uma era ativamente prejudicial. account members carregava um único elemento global no member id — um membro poderia administrar exatamen...
Mostrar o que custaria desligar a abertura de falhas
kamo.entitlement.fail-open concede qualquer aplicativo que a matriz do plano nunca menciona. Está. documentado como uma válvula temporária para o enchimento do ...
Opt-in auto-expand com um teto
Duas colunas sobre a assinatura que detém os blocos: se comprar outro um automaticamente quando a organização fica sem espaço, e o máximo que pode Nunca comprar...
Gravar o que cada preço Stripe foi criado com
O mapeamento armazenado apenas qual ID de preço usar, então uma mudança de preço do catálogo poderia nem sequer ser notado. garantirPlanPreços curto-circuito na...
Dar um efeito ao subsídio de armazenagem
O armazenamento foi medido em dezenove domínios, por noite, com falha de construção teste de cobertura — e nada em qualquer lugar computou um subsídio ou recuso...
Dê um tamanho de unidade e uma quantidade de compra
A unidade de um complemento só existiu como prosa dentro de sua descrição ("Cada unidade adiciona 25 GB") e como uma constante codificada no site de marketing, ...
Registro durável de uma conversa que o cliente levantou sozinho
MediaSessionMember ganha AUTO OPENED AT, ao lado do msgIdLastViewed porque é o o mesmo grão — um fato sobre a relação de um membro com uma sessão. Aquele. respo...
Restaurar as terminações CRLF no repositório de participantes
O commit anterior reescreveu o arquivo através de um script que normalizou seu terminações de linha, então uma adição de doze linhas chegou como uma reescrita d...
Procura de convidados e delete-por-evento
A janela do evento mostra com quem está um evento e o endpoint da lista devolve uma mês de eventos de cada vez. Pedir convidados por evento é uma consulta por l...
Estratégia AUTO ASSIGNMENT e um registro durável de uma entrega invisível
AUTO ASSIGNMENT(3) é anexado ao SupportAssignmentStrategyType — assign imediatamente para um agente que está genuinamente online, preferindo quem detém o menos ...
Gravar quando uma conta foi criada
A conta não carregava nenhuma data de criação — não uma coluna nula, nenhuma coluna. A lista de contas tem uma coluna Data Criada e ordens por ela, de modo que ...
O índice de gama Geolite deve ser ASC, não o Hash padrão do YugabyteDB
A pesquisa IP é uma varredura de alcance: ONDE network start <= ? ORDEM POR network start DESC LIMIT 1 YugabyteDB partições da coluna de índice LEADING por HAS...
Calendários de escopo para o membro, e adicionar o direito de publicação em todo o org
UserCalendar e CalendarEvent penduraram o USER ID sozinho e não carregaram organização. Um usuário é global e um membro é aquele usuário dentro de um organizaçã...
PublicChatApiKey.scopes jsonb binding
Um campo com um inicializador foi ignorado pela varredura jsonb anterior, então isso um ainda ligado como varchar: 'column escopos é do tipo jsonb mas a express...
SQL somente para barataDB que o PostgreSQL rejeita
BarataDB soletra o tipo de texto STRING; PostgreSQL e YugabyteDB usam TEXTO. 25 moldes através de consultas nativas ainda emitiam CAST(x AS STRING) e ::STRING, ...
@Lob String deve pin LONGVARCHAR ou PostgreSQL lê-lo como um OID
O dialeto PostgreSQL de Hibernate mapeia @Lob String para um OID (grande objeto referência) e lê-lo com getLong(). Dialeto de Barata mapeou o mesmo anotação par...
Contar cada ficheiro uma vez por organização, não uma vez por envio
Billing foi por imgs registro, então uma organização que enviou o mesmo arquivo cinco Os tempos foram carregados cinco vezes. A regra do proprietário é uma carg...
Combine conteúdo armazenado no BLAKE3 sozinho, para que um navegador possa se dar ao luxo de perguntar
Provar posse exigiu ambos hashes, e um navegador não tem rápido SHA3-256 — js-sha3 é JavaScript puro em ~ 25 MB/s. Medido em um vídeo de 358 MB que foi ~ 20 seg...
Bill gerou miniaturas para a organização
Miniaturas e faixas por canal são o armazenamento da causa de uploads de uma organização, assim, na instrução do proprietário eles agora contam para o total des...
Contagem de marca e armazenamento de documentos Docstive
Quase tudo que uma organização armazena registra seu próprio tamanho em algum lugar — e linha imgs, uma linha kb media, uma medição da caixa de correio. Duas co...
Contar anexos de mensagens de texto
Os anexos MMS são armazenados e não foram contados. Eles também não são o que eles parecido com: VoipMessageService codifica o anexo como um dado: URI e escreve...
Contar cada tipo de arquivo armazenado como sua própria categoria
Gravações de chamadas, mensagens de voz, anexos de chat, recursos de RH, marketing materiais, gravações de reuniões e qualquer tipo de documento são todas linha...
Meça o correio que o Kamo hospeda, por caixa de correio
EMAIL foi fonte do email metadata.search index, que estava errado em ambos Direcção. Perdeu KamoMail inteiramente — uma org on KAMO MAIL tem suas mensagens e an...
Leia a última data de instantâneo sem carregar o histórico
Um resumo precisa de uma data. Ele estava lendo-o carregando um intervalo de dois anos de fotos e tirar o máximo — cinco domínios vezes todos os dias da históri...
Modelo de uso de armazenamento por organização
Nada nunca resumiu o armazenamento por organização. Seis entidades carregam um byte contagem por arquivo, e nenhum código agregado nenhum deles, por isso a cont...
Um produto de plataforma não é um dos seus próprios inquilinos
isOrgEntitledToApp isento apenas a org de topo, então uma org marcado éPlatformProduct foi cobrado como Se fosse um cliente. sign.pink senta-se em uma assinatur...
Parar uma carga de página de persistir na projeção de direito
computEffectiveCaracterísticas adicionadas ao operador Hibernate-gerido OrgFeature linhas diretamente para sua saída E depois virou-se. Seu próprio javadoc cham...
Marcar a exclusão da alias desactualizada
A chave do catálogo é o ID numérico do ServiceType, e várias constantes aposentadas compartilhar deliberadamente um com o aplicativo que os substituiu — DOC MAN...
Parar os terminais hipotecários que impõem um direito de empréstimo pessoal
O LOS * -> O renome MLOS * foi aplicado à declaração de enum e em nenhum outro lugar. Porque os libertos os nomes foram imediatamente redeclarados como os direi...
Responder à questão da matriz do plano para cada aplicativo em uma passagem
A guia Apps & Features pergunta se cada aplicativo aparece na matriz do plano, e o formulário por aplicativo verifica as tabelas de recursos e complementos de p...
Resolver a depreciação através do catálogo de aplicativos
Um aplicativo que o operador se aposenta tem que desaparecer em todos os lugares, não apenas do página de aplicativos — caso contrário, ele continua aparecendo ...
Torne a disponibilidade do aplicativo e editável em fase de execução
Cada atributo que a página de configurações de apps renderiza — nome, descrição, fase, depreciação — era uma constante de tempo de compilação na série ServiceTy...
Resolver o direito de aplicação por ServiceType; renomear LOS para MLOS
Título resolvido ServiceType.name () contra **************************** Os códigos do catálogo são códigos de marketing (USERS, VIDEO CONF, HR SYSTEM, ...) e n...
Transferir o armazenamento com o conteúdo endereçado para que um objeto possa exceder o heap
Os anexos de chat estão se movendo para um teto de 3 GiB. storeContentAddressed tomou um byte[], que não pode expressar isso em absoluto — um array Java pára em...
Programar a metade da digitalização invariante que este recurso não consegue ver
SharedLibBeanSafety Teste só pode policiar a biblioteca: ele sabe que um feijão requer um repositório de algum pacote, e nada sobre se os serviços ~40 o verific...
Detecta as dependências do repositório inseguras em vez de as listar
O guarda transportava 29 infractores de base e uma isenção de localização, e não apanhou nenhum dos quatro interrupções que existe para prevenir. Ambos eram pal...
Parar o ponteiro da caixa de correio da falha na inicialização da plataforma
DepartmentService é um @Service, e cada serviço carrega @ComponentScan("com.kamo"), então todos os ~40 deles o constroem. Dar-lhe um MailboxRepository, portanto...
Os cinco modelos de email do ciclo de vida do envelope que nunca foram escritos
Um envelope de assinatura eletrônica tinha exatamente dois modelos: o convite e o Código avançado. Nada existia para nada que acontecesse depois de um signatári...
Deixe um departamento e uma org ponto em uma de suas caixas de correio
Um e-mail de contato do departamento era texto livre, assim que poderia nomear um endereço que o org faz Dois dos três departamentos com um conjunto hoje fazem ...
Um gerente, e uma pesquisa de diretórios que sobrevive a uma grande org
TeamMember ganha uma auto-referência opcional para quem ela reporta. colunaDefinição é ligado à INT8 para que o Hibernate não possa copiar o Membro. DEFAULT uni...
Deixe um departamento sentar-se sob um departamento pai
Departamentos eram uma lista plana, então um gráfico org com Operações > Sucesso do Cliente > A bordo não tinha como dizer isso. Departamento ganha um auto-refe...
Conta de SeloDatas de endereço para que um endereço possa realmente ser salvo
DATE CREED não é NULL com um DEFAULT now(), mas nada nunca definiu o campo. Hibernar nomes cada coluna inserível em seu INSERT, por isso ele enviou um explícito...
Faça as reivindicações atômicas realmente atômicas, e pare de esfomear o pagamento mais antigo
Uma revisão inversa do caminho do dinheiro encontrado o projeto da concorrência não foi Correndo. @Modificing without @Transactional. Spring Data não abre nenh...
Encontrar comissões de um membro divididas para sua própria visão comissões
Org-scoped em vez de chaveado apenas no membro: ORG ID é duplicado para isto tabela para que uma linha nunca possa ser lida cross-tenant por id, e um localizado...
Registro de comissão de membro da equipe e domínio de pagamento Stripe
Adiciona com.kamo.z.shared.commission: um livro de registos assinado apenas para apêndices, um por membro linha de saldo que existe puramente para serializar re...
Como o que vês no transporte?
Cada uma dessas atualizações pousa automaticamente em seu espaço de trabalho. Comece grátis e veja crescer semana após semana.